Область техники, к которой относится изобретение
[0001] Настоящее раскрытие относится к способу кодирования трехмерных данных, к способу декодирования трехмерных данных, к устройству кодирования трехмерных данных и к устройству декодирования трехмерных данных.
Уровень техники
[0002] Устройства или услуги с использованием трехмерных данных предположительно должны находить широкое применение в широком диапазоне областей техники, таких как машинное зрение, которое обеспечивает автономную работу автомобилей или роботов, картографическая информация, мониторинг, обследование инфраструктуры и распространение видео. Трехмерные данные получаются через различные средства, включающие в себя датчик расстояния, такой как, дальномер, а также стереокамеру и комбинацию множества монокулярных камер.
[0003] Способы представления трехмерных данных включают в себя способ, известный как схема на основе облаков точек, которая представляет форму трехмерной структуры посредством точечной группы в трехмерном пространстве. В схеме на основе облаков точек сохраняются позиции и цвета точечной группы. Хотя облако точек предположительно должно представлять собой основной способ представления трехмерных данных, огромный объем данных точечной группы требует сжатия объема трехмерных данных посредством кодирования для накопления и передачи, как и в случае двумерного движущегося изображения (примеры включают в себя MPEG-4 AVC и HEVC, стандартизированное посредством MPEG).
[0004] Между тем, сжатие облаков точек частично поддерживается, например, посредством библиотеки с открытым исходным кодом (библиотеки облаков точек) для связанной с облаками точек обработки.
[0005] Кроме того, известна технология для поиска и отображения инфраструктурного объекта, расположенного в окрестности транспортного средства (например, см. патентный документ (PTL) 1).
Список библиографических ссылок
Патентные документы
[0006] PTL 1. Международная публикация WO 2014/020663
Сущность изобретения
Техническая задача
[0007] Возникает потребность в уменьшении объема обработки при кодировании и декодировании трехмерных данных.
[0008] Настоящее раскрытие имеет цель предложить способ кодирования трехмерных данных, способ декодирования трехмерных данных, устройство кодирования трехмерных данных или устройство декодирования трехмерных данных, которые делают возможным уменьшение объема обработки.
Решение задачи
[0009] Способ кодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: кодирование первого флага, указывающего то, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при кодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2; выбор таблицы кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического кодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел следует ссылаться; и выбор таблицы кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического кодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N.
[0010] Способ декодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: декодирование первого флага, указывающего то, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при декодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2; выбор таблицы кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического декодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел следует ссылаться; и выбор таблицы кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического декодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N.
Преимущества изобретения
[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 является блок-схемой последовательности операций способа для процесса декодирования с использованием информации структуры согласно варианту 8 осуществления.
Фиг. 70 является блок-схемой последовательности операций способа для процесса кодирования с использованием информации атрибутов согласно варианту 8 осуществления.
Фиг. 71 является блок-схемой последовательности операций способа для процесса декодирования с использованием информации атрибутов согласно варианту 8 осуществления.
Фиг. 72 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием геометрической информации согласно варианту 8 осуществления.
Фиг. 73 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации структуры согласно варианту 8 осуществления.
Фиг. 74 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации атрибутов согласно варианту 8 осуществления.
Фиг. 75 является блок-схемой устройства кодирования трехмерных данных согласно варианту 8 осуществления.
Фиг. 76 является блок-схемой устройства декодирования трехмерных данных согласно варианту 8 осуществления.
Фиг. 77 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов согласно варианту 9 осуществления.
Фиг. 78 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области согласно варианту 9 осуществления.
Фиг. 79 является схемой, иллюстрирующей пример соседних опорных узлов согласно варианту 9 осуществления.
Фиг. 80 является схемой, иллюстрирующей взаимосвязь между родительским узлом и узлами согласно варианту 9 осуществления.
Фиг. 81 является схемой, иллюстрирующей пример кода заполнения родительского узла согласно варианту 9 осуществления.
Фиг. 82 является блок-схемой устройства кодирования трехмерных данных согласно варианту 9 осуществления.
Фиг. 83 является блок-схемой устройства декодирования трехмерных данных согласно варианту 9 осуществления.
Фиг. 84 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 9 осуществления.
Фиг. 85 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 9 осуществления.
Фиг. 86 является схемой, иллюстрирующей пример выбора таблицы кодирования согласно варианту 9 осуществления.
Фиг. 87 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области согласно варьированию 1 варианта 9 осуществления.
Фиг. 88 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варьированию 1 варианта 9 осуществления.
Фиг. 89 является схемой, иллюстрирующей пример синтаксиса информации заголовка согласно варьированию 1 варианта 9 осуществления.
Фиг. 90 является схемой, иллюстрирующей пример соседних опорных узлов согласно варьированию 2 варианта 9 осуществления.
Фиг. 91 является схемой, иллюстрирующей пример текущего узла и соседних узлов согласно варьированию 2 варианта 9 осуществления.
Фиг. 92 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов согласно варьированию 3 варианта 9 осуществления.
Фиг. 93 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области согласно варьированию 3 варианта 9 осуществления.
Фиг. 94 является схемой, иллюстрирующей пример перемещения в пространстве согласно варианту 10 осуществления.
Фиг. 95 является схемой, иллюстрирующей пример вращения согласно варианту 10 осуществления.
Фиг. 96 является схемой, иллюстрирующей пример горизонтальности и вертикальности согласно варианту 10 осуществления.
Фиг. 97 является схемой, иллюстрирующей пример смежной поверхности согласно варианту 10 осуществления.
Фиг. 98 является схемой, иллюстрирующей примеры перемещения в пространстве согласно варианту 10 осуществления.
Фиг. 99 является схемой, иллюстрирующей примеры вращения вокруг оси X согласно варианту 10 осуществления.
Фиг. 100 является схемой, иллюстрирующей примеры вращения вокруг оси Y согласно варианту 10 осуществления.
Фиг. 101 является схемой, иллюстрирующей примеры вращения вокруг оси Z согласно варианту 10 осуществления.
Фиг. 102 является схемой, иллюстрирующей примеры горизонтальности и вертикальности согласно варианту 10 осуществления.
Фиг. 103 является схемой, иллюстрирующей примеры смежной поверхности согласно варианту 10 осуществления.
Фиг. 104 является схемой, иллюстрирующей пример группировки шаблонов заполнения соседних узлов согласно варианту 10 осуществления.
Фиг. 105 является схемой, иллюстрирующей пример группировки шаблонов заполнения соседних узлов согласно варианту 10 осуществления.
Фиг. 106 является схемой, иллюстрирующей пример таблицы преобразования согласно варианту 10 осуществления.
Фиг. 107 является схемой, иллюстрирующей пример таблицы преобразования согласно варианту 10 осуществления.
Фиг. 108 является схемой, иллюстрирующей краткое представление процесса преобразования согласно варианту 10 осуществления.
Фиг. 109 является схемой, иллюстрирующей краткое представление процесса преобразования согласно варианту 10 осуществления.
Фиг. 110 является блок-схемой устройства кодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 111 является блок-схемой устройства декодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 112 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 113 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 114 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 115 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 116 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 117 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 10 осуществления.
Фиг. 118 является схемой, иллюстрирующей пример группировки шаблонов заполнения соседних узлов согласно варианту 11 осуществления.
Фиг. 119 является блок-схемой последовательности операций способа для процесса выбора таблиц кодирования согласно варианту 11 осуществления.
Фиг. 120 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных согласно варианту 11 осуществления.
Фиг. 121 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных согласно варианту 11 осуществления.
Фиг. 122 является схемой для иллюстрации избыточных таблиц кодирования согласно варианту 12 осуществления.
Фиг. 123 является схемой, иллюстрирующей статические и динамические таблицы кодирования согласно варианту 12 осуществления.
Фиг. 124 является схемой, иллюстрирующей пример текущего узла согласно варианту 12 осуществления.
Фиг. 125 является схемой, иллюстрирующей операции в случае 1 согласно варианту 12 осуществления.
Фиг. 126 является схемой, иллюстрирующей операции в случае 2 согласно варианту 12 осуществления.
Фиг. 127 является схемой, иллюстрирующей пример соседних узлов согласно варианту 12 осуществления.
Фиг. 128 является схемой, иллюстрирующей конкретные примеры числа избыточных таблиц согласно варианту 12 осуществления.
Фиг. 129 является схемой, иллюстрирующей конкретные примеры числа избыточных таблиц согласно варианту 12 осуществления.
Фиг. 130 является схемой, иллюстрирующей конкретный пример избыточной таблицы согласно варианту 12 осуществления.
Фиг. 131 является схемой, иллюстрирующей конкретные примеры избыточной таблицы согласно варианту 12 осуществления.
Фиг. 132 является схемой, иллюстрирующей операцию неудаления избыточной таблицы согласно варианту 12 осуществления.
Фиг. 133 является схемой, иллюстрирующей примеры таблиц кодирования, из которых удаляются избыточные таблицы, согласно варианту 12 осуществления.
Фиг. 134 является схемой, иллюстрирующей примеры числа таблиц кодирования, когда избыточные таблицы удаляются, согласно варианту 12 осуществления.
Фиг. 135 является схемой, иллюстрирующей процесс создания таблицы кодирования, имеющей динамический размер, согласно варианту 12 осуществления.
Фиг. 136 является схемой, иллюстрирующей примеры размера таблицы согласно варианту 12 осуществления.
Фиг. 137 является блок-схемой последовательности операций способа для процесса создания таблицы кодирования, имеющей динамический размер, согласно варианту 12 осуществления.
Фиг. 138 является схемой, иллюстрирующей примеры размера таблицы согласно варианту 12 осуществления.
Фиг. 139 является блок-схемой последовательности операций способа для процесса выбора таблиц кодирования согласно варианту 12 осуществления.
Подробное описание вариантов осуществления
[0013] Способ кодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: кодирование первого флага, указывающего то, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при кодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2; выбор таблицы кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического кодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел следует ссылаться; и выбор таблицы кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического кодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N.
[0014] Согласно этой конфигурации, поскольку можно сокращать число таблиц кодирования, можно уменьшать объем обработки. Кроме того, поскольку можно задавать таблицу кодирования надлежащим образом посредством изменения числа таблиц кодирования согласно тому, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, можно уменьшать объем обработки при подавлении уменьшения эффективности кодирования.
[0015] Например, N может превышать M.
[0016] Например, когда таблица кодирования выбирается из M таблиц кодирования, таблица кодирования может выбираться из M таблиц кодирования со ссылкой на таблицу соответствий согласно состояниям заполнения соседних узлов, причем таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и M таблиц кодирования, при этом L является целым числом, большим M.
[0017] Например, когда таблица кодирования выбирается из M таблиц кодирования, таблица кодирования может выбираться из M таблиц кодирования со ссылкой на первую таблицу соответствий и вторую таблицу соответствий, согласно состояниям заполнения соседних узлов, причем первая таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и I таблиц кодирования, причем вторая таблица соответствий указывает взаимосвязь соответствия между I таблиц кодирования и M таблиц кодирования, при этом L является целым числом, большим I, при этом I является целым числом, большим M.
[0018] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, горизонтальном по отношению к плоскости X-Y.
[0019] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, вертикальном по отношению к плоскости X-Y.
[0020] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является горизонтальной по отношению к плоскости X-Y.
[0021] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является вертикальной по отношению к плоскости X-Y.
[0022] Способ декодирования трехмерных данных согласно одному аспекту настоящего раскрытия включает в себя: декодирование первого флага, указывающего то, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при декодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2; выбор таблицы кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического декодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел следует ссылаться; и выбор таблицы кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполнение арифметического декодирования для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N.
[0023] Согласно этой конфигурации, поскольку можно сокращать число таблиц кодирования, можно уменьшать объем обработки. Кроме того, поскольку можно задавать таблицу кодирования надлежащим образом посредством изменения числа таблиц кодирования согласно тому, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, можно уменьшать объем обработки при подавлении уменьшения эффективности кодирования.
[0024] Например, N может превышать M.
[0025] Например, когда таблица кодирования выбирается из M таблиц кодирования, таблица кодирования может выбираться из M таблиц кодирования со ссылкой на таблицу соответствий, согласно состояниям заполнения соседних узлов, причем таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и M таблиц кодирования, при этом L является целым числом, большим M.
[0026] Например, когда таблица кодирования выбирается из M таблиц кодирования, таблица кодирования может выбираться из M таблиц кодирования со ссылкой на первую таблицу соответствий и вторую таблицу соответствий, согласно состояниям заполнения соседних узлов, причем первая таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и I таблиц кодирования, причем вторая таблица соответствий указывает взаимосвязь соответствия между I таблиц кодирования и M таблиц кодирования, при этом L является целым числом, большим I, при этом I является целым числом, большим M.
[0027] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, горизонтальном по отношению к плоскости X-Y.
[0028] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, вертикальном по отношению к плоскости X-Y.
[0029] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является горизонтальной по отношению к плоскости X-Y.
[0030] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, могут представлять собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле, и идентичная таблица кодирования из числа M таблиц кодирования может назначаться, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является вертикальной по отношению к плоскости X-Y.
[0031] Устройство кодирования трехмерных данных согласно одному аспекту настоящего раскрытия представляет собой устройство кодирования трехмерных данных, которое кодирует трехмерные точки, включающие в себя информацию атрибутов, причем устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство. С использованием запоминающего устройства, процессор: кодирует первый флаг, указывающий следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при кодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2; выбирает таблицу кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое кодирование для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел следует ссылаться; и выбирает таблицу кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое кодирование для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N.
[0032] Согласно этой конфигурации, поскольку можно сокращать число таблиц кодирования, можно уменьшать объем обработки. Кроме того, поскольку можно задавать таблицу кодирования надлежащим образом посредством изменения числа таблиц кодирования согласно тому, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, можно уменьшать объем обработки при подавлении уменьшения эффективности кодирования.
[0033] Устройство декодирования трехмерных данных согласно одному аспекту настоящего раскрытия представляет собой устройство декодирования трехмерных данных, которое декодирует трехмерные точки, имеющие информацию атрибутов, причем устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство. С использованием запоминающего устройства, процессор: декодирует первый флаг, указывающий следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при декодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2; выбирает таблицу кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое декодирование для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел следует ссылаться; и выбирает таблицу кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое декодирование для информации текущего узла с использованием выбранной таблицы кодирования, когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N.
[0034] Согласно этой конфигурации, поскольку можно сокращать число таблиц кодирования, можно уменьшать объем обработки. Кроме того, поскольку можно задавать таблицу кодирования надлежащим образом посредством изменения числа таблиц кодирования согласно тому, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, можно уменьшать объем обработки при подавлении уменьшения эффективности кодирования.
[0035] Следует отметить, что эти общие или конкретные аспекты могут реализовываться как система, способ, интегральная схема, компьютерная программа или машиночитаемый носитель записи, такой как CD-ROM, либо могут реализовываться как любая комбинация системы, способа, интегральной схемы, компьютерной программы и носителя записи.
[0036] Далее описываются варианты осуществления со ссылкой на чертежи. Следует отметить, что нижеприведенные варианты осуществления показывают примерные варианты осуществления настоящего раскрытия. Числовые значения, формы, материалы, структурные компоненты, компоновка и соединение структурных компонентов, этапы, порядок обработки этапов и т.д., показанных в нижеприведенных вариантах осуществления, представляют собой просто примеры и в силу этого не имеют намерение ограничивать настоящее раскрытие. Из структурных компонентов, описанных в нижеприведенных вариантах осуществления, структурные компоненты, не изложенные ни в одном из независимых пунктов формулы изобретения, которые указывают наиболее обобщенные идеи, описываются как необязательные структурные компоненты.
[0037] Вариант 1 осуществления
Во-первых, описывается структура данных для кодированных трехмерных данных (в дальнейшем также называемых "кодированными данными") согласно настоящему варианту осуществления. Фиг. 1 является схемой, показывающей структуру кодированных трехмерных данных согласно настоящему варианту осуществления.
[0038] В настоящем варианте осуществления, трехмерное пространство разделяется на пространства (SPC), которые соответствуют изображениям при кодировании движущихся изображений, и трехмерные данные кодируются на основе SPC. Каждое SPC дополнительно разделяется на объемы (VLM), которые соответствуют макроблокам и т.д. при кодировании движущихся изображений, и прогнозирования и преобразования выполняются на основе VLM. Каждый объем включает в себя множество вокселов (VXL), каждый из которых представляет собой минимальную единицу, в которой позиционные координаты ассоциируются. Следует отметить, что прогнозирование представляет собой процесс формирования прогнозирующих трехмерных данных, аналогичных текущей единице обработки, посредством ссылки на другую единицу обработки и кодирования дифференциала между прогнозирующими трехмерными данными и текущей единицей обработки, как и в случае прогнозирований, выполняемых для двумерных изображений. Такое прогнозирование включает в себя не только пространственное прогнозирование, в котором ссылаются на другую единицу прогнозирования, соответствующую идентичному времени, но также и временное прогнозирование, в котором ссылаются на единицу прогнозирования, соответствующую другому времени.
[0039] При кодировании трехмерного пространства, представленного посредством данных точечных групп, таких как облако точек, например, устройство кодирования трехмерных данных (в дальнейшем также называемое "устройством кодирования") кодирует точки в точечной группе или точки, включенные в соответствующие вокселы, совместным способом, в соответствии с размером воксела. Более точные вокселы обеспечивают высокоточное представление трехмерной формы точечной группы, тогда как большие вокселы обеспечивают приблизительное представление трехмерной формы точечной группы.
[0040] Следует отметить, что далее описывается случай, в котором трехмерные данные представляют собой облако точек, но трехмерные данные не ограничены облаком точек, и в силу этого могут использоваться трехмерные данные любого формата.
[0041] Также следует отметить, что могут использоваться вокселы с иерархической структурой. В таком случае, когда иерархия включает в себя n уровней, может последовательно указываться то, включается или нет точка дискретизации в (n-1)-ый уровень или его нижние уровни (нижние уровни n-го уровня). Например, когда только n-ый уровень декодируется, и (n-1)-ый уровень или его нижние уровни включают в себя точку дискретизации, n-ый уровень может декодироваться при условии, что точка дискретизации включается в центр воксела на n-ом уровне.
[0042] Кроме того, устройство кодирования получает данные точечных групп, с использованием, например, датчика расстояния, стереокамеры, монокулярной камеры, гироскопического датчика или инерциального датчика.
[0043] Как и в случае кодирования движущихся изображений, каждое SPC классифицируется на одну, по меньшей мере, из трех структур прогнозирования, которые включают в себя: внутреннее SPC (I-SPC), которое является отдельно декодируемым; прогнозирующее SPC (P-SPC), допускающее только однонаправленную ссылку; и двунаправленное SPC (B-SPC), допускающее двунаправленные ссылки. Каждое SPC включает в себя два типа информации времени: время декодирования и время отображения.
[0044] Кроме того, как показано на фиг. 1, единица обработки, которая включает в себя множество SPC, представляет собой группу пространств (GOS), которая представляет собой единицу произвольного доступа. Кроме того, единица обработки, которая включает в себя множество GOS, представляет собой мир (WLD).
[0045] Пространственная область, занимаемая посредством каждого мира, ассоциирована с абсолютной позицией на земле, посредством использования, например, GPS или информации широты и долготы. Такая информация позиции сохраняется в качестве метаинформации. Следует отметить, что метаинформация может быть включена в кодированные данные или может передаваться отдельно от кодированных данных.
[0046] Кроме того, в GOS все SPC могут быть трехмерно смежными друг с другом, либо может быть предусмотрено SPC, которое не является трехмерно смежным с другим SPC.
[0047] Следует отметить, что далее также описываются такие процессы, как кодирование, декодирование и ссылка, которые должны выполняться для трехмерных данных, включенных в единицы обработки, такие как GOS, SPC и VLM, просто как выполнение кодирования/кодировать, декодирования/декодировать, ссылки и т.д. для единицы обработки. Также следует отметить, что трехмерные данные, включенные в единицу обработки, включают в себя, например, по меньшей мере, одну пару из пространственной позиции, такой как трехмерные координаты, и значения атрибута, такого как цветовая информация.
[0048] Далее описываются структуры прогнозирования для SPC в GOS. Множество SPC в идентичной GOS или множество VLM в идентичном SPC занимают взаимно различные пространства, при наличии идентичной информации времени (времени декодирования и времени отображения).
[0049] SPC в GOS, которая идет первой в порядке декодирования, представляет собой I-SPC. GOS имеют два типа: закрытая GOS и открытая GOS. Закрытая GOS представляет собой GOS, в которой все SPC в GOS являются декодируемыми, когда декодирование начинается с первого I-SPC. Между тем, открытая GOS представляет собой GOS, в которой ссылаются на другую GOS в одном или более SPC, предшествующих первому I-SPC в GOS по времени отображения, и в силу этого не может отдельно декодироваться.
[0050] Следует отметить, что в случае кодированных данных картографической информации, например, WLD иногда декодируется в обратном направлении, которое является противоположным порядку кодирования, и в силу этого обратное воспроизведение является затруднительным, когда GOS являются взаимозависимыми. В таком случае, по существу используется закрытая GOS.
[0051] Каждая GOS имеет многослойную структуру в направлении высоты, и SPC последовательно кодируются или декодируются из SPC в нижнем слое.
[0052] Фиг. 2 является схемой, показывающей пример структур прогнозирования для SPC, которые принадлежат крайнему нижнему слою в GOS. Фиг. 3 является схемой, показывающей пример структур прогнозирования для слоев.
[0053] GOS включает в себя, по меньшей мере, одно I-SPC. Из объектов в трехмерном пространстве, таких как человек, животное, автомобиль, велосипед, светофор и здание, служащих в качестве ориентира, объект небольшого размера является особенно эффективным при кодировании в качестве I-SPC. При декодировании GOS с низкой пропускной способностью или на высокой скорости, например, устройство декодирования трехмерных данных (в дальнейшем также называемое "устройством декодирования") декодирует только I-SPC в GOS.
[0054] Устройство кодирования также может изменять интервал кодирования или частоту возникновения I-SPC, в зависимости от степени разреженности и сплошности объектов в WLD.
[0055] В структуре, показанной на фиг. 3, устройство кодирования или устройство декодирования кодирует или декодирует множество слоев последовательно с нижнего слоя (слоя 1). Это увеличивает приоритет данных по земле и около нее, которые заключают в себе больший объем информации, когда, например, рассматривается беспилотный автомобиль.
[0056] Относительно кодированных данных, используемых для беспилотного аппарата, например, кодирование или декодирование может выполняться последовательно из SPC в верхнем слое в GOS в направлении высоты.
[0057] Устройство кодирования или устройство декодирования также может кодировать или декодировать множество слоев таким способом, что устройство декодирования может иметь приблизительное понимание GOS сначала, и затем разрешение постепенно увеличивается. Устройство кодирования или устройство декодирования, например, может выполнять кодирование или декодирование в порядке слоев 3, 8, 1, 9, ...,.
[0058] Далее описывается обработка статических объектов и динамических объектов.
[0059] Трехмерное пространство включает в себя сцены или неподвижные объекты, такие как здание и дорога (далее совместно называемые "статическими объектами"), и объекты с движением, такие как автомобиль и человек (далее совместно называемые "динамическими объектами"). Обнаружение объектов отдельно выполняется, например, посредством извлечения ключевых точек из данных облаков точек или из видео камеры, такой как стереокамера. В этом описании, в дальнейшем описывается примерный способ кодирования динамического объекта.
[0060] Первый способ представляет собой способ, в котором статический объект и динамический объект кодируются без различения. Второй способ представляет собой способ, в котором проводится различение между статическим объектом и динамическим объектом на основе идентификационной информации.
[0061] Например, GOS используется в качестве единицы идентификации. В таком случае, проводится различение между GOS, которая включает в себя SPC, составляющие статический объект, и GOS, которая включает в себя SPC, составляющие динамический объект, на основе идентификационной информации, сохраненной в кодированных данных или сохраненной отдельно от кодированных данных.
[0062] Альтернативно, SPC может использоваться в качестве единицы идентификации. В таком случае, проводится различение между SPC, которое включает в себя VLM, составляющие статический объект, и SPC, которое включает в себя VLM, составляющие динамический объект, на основе такой описанной идентификационной информации.
[0063] Альтернативно, VLM или VXL могут использоваться в качестве единицы идентификации. В таком случае, проводится различение между VLM или VXL, который включает в себя статический объект, и VLM или VXL, который включает в себя динамический объект, на основе такой описанной идентификационной информации.
[0064] Устройство кодирования также может кодировать динамический объект в качестве, по меньшей мере, одного VLM или SPC и может кодировать VLM или SPC, включающее в себя статический объект, и SPC, включающее в себя динамический объект, в качестве взаимно различных GOS. Когда GOS-размер является переменным в зависимости от размера динамического объекта, устройство кодирования отдельно сохраняет GOS-размер в качестве метаинформации.
[0065] Устройство кодирования также может кодировать статический объект и динамический объект отдельно друг от друга и может накладывать динамический объект на мир, состоящий из статических объектов. В таком случае, динамический объект состоит, по меньшей мере, из одного SPC, и каждое SPC ассоциировано, по меньшей мере, с одним SPC, составляющим статический объект, на который должно накладываться каждое SPC. Следует отметить, что динамический объект может представляться не посредством SPC, а посредством, по меньшей мере, одного VLM или VXL.
[0066] Устройство кодирования также может кодировать статический объект и динамический объект в качестве взаимно различных потоков.
[0067] Устройство кодирования также может формировать GOS, которая включает в себя, по меньшей мере, одно SPC, составляющее динамический объект. Устройство кодирования дополнительно может задавать размер GOS, включающей в себя динамический объект (GOS_M), и размер GOS, включающей в себя статический объект, соответствующий пространственной области GOS_M, равными идентичному размеру (так что идентичная пространственная область является занятой). Это обеспечивает возможность выполнения наложения на основе GOS.
[0068] На SPC, включенное в другую кодированную GOS, можно ссылаться в P-SPC или B-SPC, составляющем динамический объект. В случае если позиция динамического объекта временно изменяется, и идентичный динамический объект кодируется как объект в GOS, соответствующей другому времени, ссылка на SPC по GOS является эффективной с точки зрения коэффициента сжатия.
[0069] Первый способ и второй способ могут выбираться в соответствии с надлежащим использованием кодированных данных. Когда кодированные трехмерные данные используются в качестве карты, например, динамический объект должен разделяться, и в силу этого устройство кодирования использует второй способ. Между тем, устройство кодирования использует первый способ, когда разделение динамического объекта не требуется, к примеру, в случае если кодируются трехмерные данные события, такие как концерт и спортивные соревнования.
[0070] Время декодирования и время отображения GOS или SPC могут храниться в кодированных данных или в качестве метаинформации. Все статические объекты могут иметь идентичную информацию времени. В таком случае, устройство декодирования может определять фактическое время декодирования и время отображения. Альтернативно, другое значение может назначаться каждой GOS или SPC в качестве времени декодирования, и идентичное значение может быть назначено в качестве времени отображения. Кроме того, как и в случае модели декодера при кодировании движущихся изображений, такого как гипотетический опорный декодер (HRD), совместимый с HEVC, может использоваться модель, которая обеспечивает то, что декодер может выполнять декодирование бесперебойно за счет наличия буфера предварительно определенного размера и посредством считывания потока битов с предварительно определенной скоростью передачи битов в соответствии с временами декодирования.
[0071] Далее описывается топология GOS в мире. Координаты трехмерного пространства в мире представляются посредством трех осей координат (оси X, оси Y и оси Z), которые являются ортогональными друг к другу. Предварительно определенный набор правил для порядка кодирования GOS обеспечивает возможность выполнения кодирования таким образом, что пространственно смежные GOS являются смежными в кодированных данных. В примере, показанном на фиг. 4, например, GOS в плоскостях X и Z последовательно кодируются. После завершения кодирования всех GOS в определенных плоскостях X и Z, значение оси Y обновляется. Другими словами, мир расширяется в направлении по оси Y по мере того, как кодирование продолжается. Числовые GOS-индексы задаются в соответствии с порядком кодирования.
[0072] Здесь, трехмерные пространства в соответствующих мирах заранее ассоциированы "один-к-одному" с абсолютными географическими координатами, такими как GPS-координаты или координаты по широте/долготе. Альтернативно, каждое трехмерное пространство может представляться как позиция относительно заранее заданной опорной позиции. Направления оси X, оси Y и оси Z в трехмерном пространстве представляются посредством направленных векторов, которые определяются на основе широт и долгот и т.д. Такие направленные векторы сохраняются вместе с кодированными данными в качестве метаинформации.
[0073] GOS имеют фиксированный размер, и устройство кодирования сохраняет такой размер в качестве метаинформации. GOS-размер может изменяться, например, в зависимости от того, это городской район или нет, либо того, это внутри или снаружи помещения. Другими словами, GOS-размер может изменяться в соответствии с количеством или атрибутами объектов с информационными значениями. Альтернативно, в идентичном мире, устройство кодирования может адаптивно изменять GOS-размер или интервал между I-SPC в GOS в соответствии с плотностью объектов и т.д. Например, устройство кодирования задает GOS-размер как меньший, а интервал между I-SPC в GOS как более короткий, по мере того, как плотность объектов становится более высокой.
[0074] В примере, показанном на фиг. 5, чтобы обеспечивать произвольный доступ с большей степенью детализации, GOS с высокой плотностью объектов сегментируется на области третьей-десятой GOS. Следует отметить, что седьмая-десятая GOS расположены после третьей-шестой GOS.
[0075] Далее описываются структура и последовательность операций устройства кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 6 является блок-схемой устройства 100 кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 7 является блок-схемой последовательности операций способа примерной операции, выполняемой посредством устройства 100 кодирования трехмерных данных.
[0076] Устройство 100 кодирования трехмерных данных, показанное на фиг. 6, кодирует трехмерные данные 111, за счет этого формируя кодированные трехмерные данные 112. Такое устройство 100 кодирования трехмерных данных включает в себя модуль 101 получения, модуль 102 определения областей кодирования, модуль 103 разделения и кодер 104.
[0077] Как показано на фиг. 7, во-первых, модуль 101 получения получает трехмерные данные 111, которые представляют собой данные точечных групп (S101).
[0078] Затем, модуль 102 определения областей кодирования определяет текущую область для кодирования из числа пространственных областей, соответствующих полученным данным точечных групп (S102). Например, в соответствии с позицией пользователя или транспортного средства, модуль 102 определения областей кодирования определяет, в качестве текущей области, пространственную область около такой позиции.
[0079] Затем, модуль 103 разделения разделяет данные точечных групп, включенные в текущую область, на единицы обработки. Единицы обработки здесь означают такие единицы, как GOS и SPC, описанные выше. Текущая область здесь соответствует, например, миру, описанному выше. Более конкретно, модуль 103 разделения разделяет данные точечных групп на единицы обработки на основе предварительно определенного GOS-размера или присутствия/отсутствия/размера динамического объекта (S103). Модуль 103 разделения дополнительно определяет начальную позицию SPC, которое идет первым в порядке кодирования в каждой GOS.
[0080] Затем, кодер 104 последовательно кодирует множество SPC в каждой GOS, за счет этого формируя кодированные трехмерные данные 112 (S104).
[0081] Следует отметить, что, хотя здесь описывается пример, в котором текущая область разделяется на GOS и SPC, после чего каждая GOS кодируется, этапы обработки не ограничены этим порядком. Например, могут использоваться этапы, в которых определяется структура одного GO, после чего выполняется кодирование такой GOS, и затем определяется структура последующей GOS.
[0082] Таким образом, как описано выше, устройство 100 кодирования трехмерных данных кодирует трехмерные данные 111, за счет этого формируя кодированные трехмерные данные 112. Более конкретно, устройство 100 кодирования трехмерных данных разделяет трехмерные данные на первые единицы обработки (GOS), причем каждая из них представляет собой единицу произвольного доступа и ассоциирована с трехмерными координатами, разделяет каждую из первых единиц обработки (GOS) на вторые единицы обработки (SPC) и разделяет каждую из вторых единиц обработки (SPC) на третьи единицы обработки (VLM). Каждая из третьих единиц обработки (VLM) включает в себя, по меньшей мере, один воксел (VXL), который представляет собой минимальную единицу, в которой информация позиции ассоциирована.
[0083] Затем, устройство 100 кодирования трехмерных данных кодирует каждую из первых единиц обработки (GOS), за счет этого формируя кодированные трехмерные данные 112. Более конкретно, устройство 100 кодирования трехмерных данных кодирует каждую из вторых единиц обработки (SPC) в каждой из первых единиц обработки (GOS). Устройство 100 кодирования трехмерных данных дополнительно кодирует каждую из третьих единиц обработки (VLM) в каждой из вторых единиц обработки (SPC).
[0084] Когда текущая первая единица обработки (GOS) представляет собой закрытую GOS, например, устройство 100 кодирования трехмерных данных кодирует текущую вторую единицу обработки (SPC), включенную в такую текущую первую единицу обработки (GOS), посредством ссылки на другую вторую единицу обработки (SPC), включенную в текущую первую единицу обработки (GOS). Другими словами, устройство 100 кодирования трехмерных данных не ссылается на вторую единицу обработки (SPC), включенную в первую единицу обработки (GOS), которая отличается от текущей первой единицы обработки (GOS).
[0085] Между тем, когда текущая первая единица обработки (GOS) представляет собой открытую GOS, устройство 100 кодирования трехмерных данных кодирует текущую вторую единицу обработки (SPC), включенную в такую текущую первую единицу обработки (GOS), посредством ссылки на другую вторую единицу обработки (SPC), включенную в текущую первую единицу обработки (GOS), или на вторую единицу обработки (SPC), включенную в первую единицу обработки (GOS), которая отличается от текущей первой единицы обработки (GOS).
[0086] Кроме того, устройство 100 кодирования трехмерных данных выбирает, в качестве типа текущей второй единицы обработки (SPC), одно из следующего: первый тип (I-SPC), в котором не ссылаются на другую вторую единицу обработки (SPC); второй тип (P-SPC), в котором ссылаются на другую одну вторую единицу обработки (SPC); и третий тип, в котором ссылаются на другие две вторых единицы обработки (SPC). Устройство 100 кодирования трехмерных данных кодирует текущую вторую единицу обработки (SPC) в соответствии с выбранным типом.
[0087] Далее описываются структура и последовательность операций устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 8 является блок-схемой устройства 200 декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 9 является блок-схемой последовательности операций способа примерной операции, выполняемой посредством устройства 200 декодирования трехмерных данных.
[0088] Устройство 200 декодирования трехмерных данных, показанное на фиг. 8, декодирует кодированные трехмерные данные 211, за счет этого формируя декодированные трехмерные данные 212. Кодированные трехмерные данные 211 здесь, например, представляют собой кодированные трехмерные данные 112, сформированные посредством устройства 100 кодирования трехмерных данных. Такое устройство 200 декодирования трехмерных данных включает в себя модуль 201 получения, модуль 202 определения GOS для начала декодирования, модуль 203 определения SPC для декодирования и декодер 204.
[0089] Во-первых, модуль 201 получения получает кодированные трехмерные данные 211 (S201). Затем, модуль 202 определения GOS для начала декодирования определяет текущую GOS для декодирования (S202). Более конкретно, модуль 202 определения GOS для начала декодирования ссылается на метаинформацию, сохраненную в кодированных трехмерных данных 211 или сохраненную отдельно от кодированных трехмерных данных, чтобы определять, в качестве текущей GOS, GOS, которая включает в себя SPC, соответствующее пространственной позиции, объекту или времени, с которого должно начинаться декодирование.
[0090] Затем, модуль 203 определения SPC для декодирования определяет тип(ы) (I-, P- и/или B-) SPC, которые должны декодироваться в GOS (S203). Например, модуль 203 определения SPC для декодирования определяет то, следует (1) декодировать только I-SPC, (2) декодировать I-SPC и P-SPC или (3) декодировать SPC всех типов. Следует отметить, что настоящий этап может не выполняться, когда тип(ы) SPC, которые должны декодироваться, заранее определяются, к примеру, когда заранее определяются все SPC, которые должны декодироваться.
[0091] Далее декодер 204 получает местоположение адреса в кодированных трехмерных данных 211, с которого начинается SPC, которое идет первым в GOS в порядке декодирования (идентичном порядку кодирования). Декодер 204 получает кодированные данные первого SPC из местоположения адреса и последовательно декодирует SPC с такого первого SPC (S204). Следует отметить, что местоположение адреса сохраняется в метаинформации и т.д.
[0092] Устройство 200 декодирования трехмерных данных декодирует декодированные трехмерные данные 212 таким образом, как описано выше. Более конкретно, устройство 200 декодирования трехмерных данных декодирует каждые кодированные трехмерные данные 211 первых единиц обработки (GOS), причем каждая из них представляет собой единицу произвольного доступа и ассоциирована с трехмерными координатами, за счет этого формируя декодированные трехмерные данные 212 первых единиц обработки (GOS). Еще более конкретно, устройство 200 декодирования трехмерных данных декодирует каждую из вторых единиц обработки (SPC) в каждой из первых единиц обработки (GOS). Устройство 200 декодирования трехмерных данных дополнительно декодирует каждую из третьих единиц обработки (VLM) в каждой из вторых единиц обработки (SPC).
[0093] Далее описывается метаинформация для произвольного доступа. Такая метаинформация формируется посредством устройства 100 кодирования трехмерных данных и включается в кодированные трехмерные данные 112 (211).
[0094] В традиционном произвольном доступе для двумерного движущегося изображения, декодирование начинается с первого кадра в единице произвольного доступа, которая находится близко к указанному времени. Между тем, в дополнение ко временам, произвольный доступ к пространствам (координатам, объектам и т.д.) предположительно должен выполняться в мире.
[0095] Чтобы обеспечивать произвольный доступ, по меньшей мере, к трем элементам координат, объектов и времен, подготавливаются таблицы, которые ассоциируют соответствующие элементы с числовыми GOS-индексами. Кроме того, числовые GOS-индексы ассоциированы с адресами соответствующих первых I-SPC в GOS. Фиг. 10 является схемой, показывающей примерные таблицы, включенные в метаинформацию. Следует отметить, что не все таблицы, показанные на фиг. 10, обязательно должны использоваться, и в силу этого используется, по меньшей мере, одна из таблиц.
[0096] Далее описывается пример, в котором произвольный доступ выполняется из координат в качестве начальной точки. Чтобы осуществлять доступ к координатам (x2, y2 и z2), сначала ссылаются на таблицу координат и GOS, которая указывает то, что точка, соответствующая координатам (x2, y2 и z2), включается во вторую GOS. Затем ссылаются на таблицу GOS и адресов, которая указывает то, что адрес первого I-SPC во второй GOS представляет собой addr(2). В связи с этим, декодер 204 получает данные из этого адреса, чтобы начинать декодирование.
[0097] Следует отметить, что адреса могут или представлять собой логические адреса либо физические адреса HDD или запоминающего устройства. Альтернативно, информация, которая идентифицирует сегменты файлов, может использоваться вместо адресов. Сегменты файлов, например, представляют собой единицы, полученные посредством сегментации, по меньшей мере, одной GOS и т.д.
[0098] Когда объект охватывает множество GOS, таблица объектов и GOS может показывать множество GOS, которым принадлежит такой объект. Когда такое множество GOS представляют собой закрытые GOS, устройство кодирования и устройство декодирования могут выполнять кодирование или декодирование параллельно. Между тем, когда такое множество GOS представляют собой открытые GOS, более высокая эффективность сжатия достигается посредством множества GOS, ссылающихся друг на друга.
[0099] Примерные объекты включают в себя человека, животное, автомобиль, велосипед, светофор и здание, служащие в качестве ориентира. Например, устройство 100 кодирования трехмерных данных извлекает ключевые точки, конкретные для объекта, из облака трехмерных точек и т.д., при кодировании мира, и обнаруживает объект на основе таких ключевых точек, чтобы задавать обнаруженный объект в качестве точки произвольного доступа.
[0100] Таким образом, как описано выше, устройство 100 кодирования трехмерных данных формирует первую информацию, указывающую множество первых единиц обработки (GOS) и трехмерные координаты, ассоциированные с соответствующими первыми единицами обработки (GOS). Кодированные трехмерные данные 112 (211) включают в себя такую первую информацию. Первая информация дополнительно указывает, по меньшей мере, одно из объектов, времен и местоположений хранения данных, которые ассоциированы с соответствующими первыми единицами обработки (GOS).
[0101] Устройство 200 декодирования трехмерных данных получает первую информацию из кодированных трехмерных данных 211. С использованием такой первой информации, устройство 200 декодирования трехмерных данных идентифицирует кодированные трехмерные данные 211 первой единицы обработки, которая соответствует указанным трехмерным координатам, объекту или времени, и декодирует кодированные трехмерные данные 211.
[0102] Далее описывается пример другой метаинформации. В дополнение к метаинформации для произвольного доступа, устройство 100 кодирования трехмерных данных также может формировать и сохранять метаинформацию, как описано ниже, и устройство 200 декодирования трехмерных данных может использовать такую метаинформацию во время декодирования.
[0103] Когда трехмерные данные используются в качестве картографической информации, например, профиль задается в соответствии с надлежащим использованием, и информация, указывающая такой профиль, может быть включена в метаинформацию. Например, профиль задается для городского или пригородного района либо для летающего объекта, и максимальный или минимальный размер и т.д. мира, SPC или VLM и т.д. задается в каждом профиле. Например, более подробная информация требуется для городского района, чем для пригородного района, и в силу этого минимальный VLM-размер задается небольшим.
[0104] Метаинформация может включать в себя значения тега, указывающие типы объектов. Каждое из таких значений тега ассоциировано с VLM, SPC или GOS, которые составляют объект. Например, значение тега может задаваться для каждого типа объекта таким образом, например, что значение тега "0" указывает "человека", значение тега "1" указывает "автомобиль", и значение тега "2" указывает "светофор". Альтернативно, когда трудно проводить оценку типа объекта, либо такое проведение оценки не требуется, может использоваться значение тега, которое указывает размер или атрибут, указывающий, например, то, представляет объект собой динамический объект или статический объект.
[0105] Метаинформация также может включать в себя информацию, указывающую диапазон пространственной области, занимаемой посредством мира.
[0106] Метаинформация также может сохранять SPC- или VXL-размер в качестве информации заголовка, общей для целого потока кодированных данных или для множества SPC, таких как SPC в GOS.
[0107] Метаинформация также может включать в себя идентификационную информацию по датчику расстояния или камере, которая использована для того, чтобы формировать облако точек, или информацию, указывающую точность позиционирования точечной группы в облаке точек.
[0108] Метаинформация также может включать в себя информацию, указывающую то, мир состоит только из статических объектов или включает в себя динамический объект.
[0109] Далее описываются варьирования настоящего варианта осуществления.
[0110] Устройство кодирования или устройство декодирования может кодировать или декодировать два или более взаимно различных SPC или GOS параллельно. GOS, которые должны кодироваться или декодироваться параллельно, могут определяться на основе метаинформации и т.д., указывающей пространственные позиции GOS.
[0111] Когда трехмерные данные используются в качестве пространственной карты для использования посредством автомобиля или летающего объекта и т.д. при движении или для создания такой пространственной карты, например, устройство кодирования или устройство декодирования может кодировать или декодировать GOS или SPC, включенные в пространство, которое идентифицируется на основе GPS-информации, информации маршрута, увеличения масштаба и т.д.
[0112] Устройство декодирования может также начинать декодирование последовательно из пространства, которое находится близко к собственному местоположению или маршруту движения. Устройство кодирования или устройство декодирования может отдавать более низкий приоритет пространству, удаленному от собственного местоположения или маршрута движения, чем приоритет близлежащего пространства, чтобы кодировать или декодировать такое удаленное пространство. "Отдавать более низкий приоритет" означает здесь, например, понижение приоритета в последовательности обработки, снижение разрешения (применение прореживания в обработке) или понижение качества изображений (увеличение эффективности кодирования, например, посредством задания шага квантования большим).
[0113] При декодировании кодированных данных, которые иерархически кодируются в пространстве, устройство декодирования может декодировать только нижний уровень в иерархии.
[0114] Устройство декодирования также может начинать декодирование предпочтительно с нижнего уровня иерархии в соответствии с увеличением масштаба или надлежащим использованием карты.
[0115] Для оценки собственного местоположения или распознавания объектов и т.д., участвующих в беспилотном вождении автомобиля или робота, устройство кодирования или устройство декодирования может кодировать или декодировать области с более низком разрешением, за исключением области, которая находится ниже или на заданной высоте от земли (области, которая должна распознаваться).
[0116] Устройство кодирования также может кодировать облака точек, представляющие пространственные формы внутренней части помещения и наружной части помещения, отдельно. Например, разделение GOS, представляющей внутреннюю часть помещения (внутренней GOS), и GOS, представляющей наружную часть помещения (наружной GOS), обеспечивает возможность устройству декодирования выбирать GOS, которая должна декодироваться, в соответствии с местоположением точки обзора, при использовании кодированных данных.
[0117] Устройство кодирования также может кодировать внутреннюю GOS и наружную GOS, имеющие близкие координаты, так что такие GOS приближаются друг к другу в кодированном потоке. Например, устройство кодирования ассоциирует идентификаторы таких GOS друг с другом и сохраняет информацию, указывающую ассоциированные идентификаторы, в метаинформации, которая сохраняется в кодированном потоке или сохраняется отдельно. Это обеспечивает возможность устройству декодирования ссылаться на информацию в метаинформации, чтобы идентифицировать внутреннюю GOS и наружную GOS, имеющие близкие координаты.
[0118] Устройство кодирования также может изменять GOS-размер или SPC-размер в зависимости от того, представляет GOS собой внутреннюю GOS или наружную GOS. Например, устройство кодирования задает размер внутренней GOS меньшим размера наружной GOS. Устройство кодирования также может изменять точность извлечения ключевых точек из облака точек или точность обнаружения объектов, например, в зависимости от того, представляет GOS собой внутреннюю GOS или наружную GOS.
[0119] Устройство кодирования также может добавлять, в кодированные данные, информацию, посредством которой устройство декодирования отображает объекты с различением между динамическим объектом и статическим объектом. Это обеспечивает возможность устройству декодирования отображать динамический объект, например, вместе с красным полем или буквами для пояснения. Следует отметить, что устройство декодирования может отображать только красное поле или буквы для пояснения вместо динамического объекта. Устройство декодирования также может отображать более конкретные типы объектов. Например, красное поле может использоваться для автомобиля, а желтое поле может использоваться для человека.
[0120] Устройство кодирования или устройство декодирования также может определять то, следует либо нет кодировать или декодировать динамический объект и статический объект в качестве другого SPC или GOS, в соответствии, например, с частотой возникновения динамических объектов или соотношением между статическими объектами и динамическими объектами. Например, когда частота возникновения или соотношение динамических объектов превышают пороговое значение, SPC или GOS, включающая в себя смесь динамического объекта и статического объекта, принимается, тогда как когда частота возникновения или соотношение динамических объектов составляет ниже порогового значения, SPC или GOS, включающая в себя смесь динамического объекта и статического объекта, не принимается.
[0121] При обнаружении динамического объекта не из облака точек, а из информации двумерных изображений камеры, устройство кодирования может отдельно получать информацию для идентификации результата обнаружения (поле или буквы) и позицию объекта и кодировать эти элементы информации в качестве части кодированных трехмерных данных. В таком случае, устройство декодирования накладывает вспомогательную информацию (поле или буквы), указывающую динамический объект, на результант декодирования статического объекта, чтобы отображать его.
[0122] Устройство кодирования также может изменять разреженность и сплошность VXL или VLM в SPC в соответствии со степенью сложности формы статического объекта. Например, устройство кодирования задает VXL или VLM с более высокой плотностью по мере того, как форма статического объекта становится более сложной. Устройство кодирования дополнительно может определять шаг квантования и т.д. для квантования пространственных позиций или цветовой информации в соответствии с разреженностью и сплошностью VXL или VLM. Например, устройство кодирования задает шаг квантования как меньший по мере того, как плотность VXL или VLM становится более высокой.
[0123] Как описано выше, устройство кодирования или устройство декодирования согласно настоящему варианту осуществления кодирует или декодирует пространство на основе SPC, которое включает в себя координатную информацию.
[0124] Кроме того, устройство кодирования и устройство декодирования выполняют кодирование или декодирование на основе объема в SPC. Каждый объем включает в себя воксел, который представляет собой минимальную единицу, в которой информация позиции ассоциирована.
[0125] Кроме того, с использованием таблицы, которая ассоциирует соответствующие элементы пространственной информации, включающей в себя координаты, объекты и времена, с GOS, либо с использованием таблицы, которая ассоциирует эти элементы друг с другом, устройство кодирования и устройство декодирования ассоциируют любые элементы друг с другом, чтобы выполнять кодирование или декодирование. Устройство декодирования использует значения выбранных элементов, чтобы определять координаты, и идентифицирует объем, воксел или SPC из таких координат, чтобы декодировать SPC, включающее в себя такой объем или воксел, или идентифицированное SPC.
[0126] Кроме того, устройство кодирования определяет объем, воксел или SPC, которое может выбираться в соответствии с элементами, через извлечение ключевых точек и распознавание объектов и кодирует определенный объем, воксел или SPC, в качестве объема, воксела или SPC, для которого является возможным произвольный доступ.
[0127] SPC классифицируются на три типа: I-SPC, которое является отдельно кодируемым или декодируемым; P-SPC, которое кодируется или декодируется посредством ссылки на любое из обработанных SPC; и B-SPC, которое кодируется или декодируется посредством ссылки на любые два из обработанных SPC.
[0128] По меньшей мере, один объем соответствует статическому объекту или динамическому объекту. SPC, включающее в себя статический объект, и SPC, включающее в себя динамический объект, кодируются или декодируются в качестве взаимно различных GOS. Другими словами, SPC, включающее в себя статический объект, и SPC, включающее в себя динамический объект, назначаются различным GOS.
[0129] Динамические объекты кодируются или декодируются на основе объекта и ассоциированы, по меньшей мере, с одним SPC, включающим в себя статический объект. Другими словами, множество динамических объектов отдельно кодируются, и полученные кодированные данные динамических объектов ассоциированы с SPC, включающим в себя статический объект.
[0130] Устройство кодирования и устройство декодирования отдают увеличенный приоритет I-SPC в GOS, чтобы выполнять кодирование или декодирование. Например, устройство кодирования выполняет кодирование таким способом, который предотвращает ухудшение характеристик I-SPC (таким способом, который обеспечивает воспроизведение исходных трехмерных данных с более высокой точностью воспроизведения после декодирования). Устройство декодирования декодирует, например, только I-SPC.
[0131] Устройство кодирования может изменять частоту использования I-SPC в зависимости от разреженности и сплошности или числа (количества) объектов в мире, чтобы выполнять кодирование. Другими словами, устройство кодирования изменяет частоту выбора I-SPC в зависимости от числа или разреженности и сплошности объектов, включенных в трехмерные данные. Например, устройство кодирования использует I-SPC на более высокой частоте по мере того, как плотность объектов в мире становится более высокой.
[0132] Устройство кодирования также задает точки произвольного доступа на основе GOS и сохраняет информацию, указывающую пространственные области, соответствующие GOS, в информации заголовка.
[0133] Устройство кодирования использует, например, значение по умолчанию в качестве пространственного размера GOS. Следует отметить, что устройство кодирования может изменять GOS-размер в зависимости от числа (количества) или разреженности и сплошности объектов или динамических объектов. Например, устройство кодирования задает пространственный размер GOS как меньший по мере того, как плотность объектов или динамических объектов становится более высокой, или число объектов или динамических объектов становится больше.
[0134] Кроме того, каждое SPC или объем включает в себя группу ключевых точек, которая извлекается посредством использования информации, полученной посредством датчика, такого как датчик глубины, гироскопический датчик или датчик с камерой. Координаты ключевых точек задаются в центральных позициях соответствующих вокселов. Кроме того, более точные вокселы предоставляют высокоточную информацию позиции.
[0135] Группа ключевых точек извлекается посредством использования множества изображений. Множество изображений включают в себя, по меньшей мере, два типа информации времени: фактическую информацию времени и идентичную информацию времени, общую для множества изображений, которые ассоциированы с SPC (например, время кодирования, используемое для управления скоростью, и т.д.).
[0136] Кроме того, кодирование или декодирование выполняется на основе GOS, которая включает в себя, по меньшей мере, одно SPC.
[0137] Устройство кодирования и устройство декодирования прогнозируют P-SPC или B-SPC в текущей GOS посредством ссылки на SPC в обработанной GOS.
[0138] Альтернативно, устройство кодирования и устройство декодирования прогнозируют P-SPC или B-SPC в текущей GOS, с использованием обработанных SPC в текущей GOS, без ссылки на другую GOS.
[0139] Кроме того, устройство кодирования и устройство декодирования передают или принимают кодированный поток на основе мира, который включает в себя, по меньшей мере, одну GOS.
[0140] Кроме того, GOS имеет многослойную структуру в одном направлении, по меньшей мере, в мире, и устройство кодирования и устройство декодирования начинают кодирование или декодирование с нижнего слоя. Например, случайная доступная GOS принадлежит крайнему нижнему слою. На GOS, которая принадлежит идентичному слою или нижнему слою, ссылаются в GOS, которая принадлежит верхнему слою. Другими словами, GOS пространственно разделяется в предварительно определенном направлении заранее, чтобы иметь множество слоев, включающих в себя, по меньшей мере, одно SPC. Устройство кодирования и устройство декодирования кодируют или декодируют каждое SPC посредством ссылки на SPC, включенное в слой, идентичный слою каждого SPC, или на SPC, включенное в слой ниже слоя каждого SPC.
[0141] Кроме того, устройство кодирования и устройство декодирования последовательно кодируют или декодируют GOS на основе мира, который включает в себя такие GOS. Таким образом, устройство кодирования и устройство декодирования записывают или считывают информацию, указывающую порядок (направление) кодирования или декодирования, в качестве метаданных. Другими словами, кодированные данные включают в себя информацию, указывающую порядок кодирования множества GOS.
[0142] Устройство кодирования и устройство декодирования также кодируют или декодируют взаимно различные два или более SPC или GOS параллельно.
[0143] Кроме того, устройство кодирования и устройство декодирования кодируют или декодируют пространственную информацию (координаты, размер и т.д.) относительно SPC или GOS.
[0144] Устройство кодирования и устройство декодирования кодируют или декодируют SPC или GOS, включенные в идентифицированное пространство, которое идентифицируется на основе внешней информации относительно собственного местоположения или/и размера области, такой как GPS-информация, информация маршрута или увеличение.
[0145] Устройство кодирования или устройство декодирования отдает более низкий приоритет пространству, удаленному от собственного местоположения, чем приоритет близлежащего пространства, чтобы выполнять кодирование или декодирование.
[0146] Устройство кодирования задает направление в одном из направлений в мире, в соответствии с увеличением или надлежащим использованием, чтобы кодировать GOS, имеющую многослойную структуру в таком направлении. Кроме того, устройство декодирования декодирует GOS, имеющую многослойную структуру в одном из направлений в мире, которое задано в соответствии с увеличением или надлежащим использованием, предпочтительно с нижнего слоя.
[0147] Устройство кодирования изменяет точность извлечения ключевых точек, точность распознавания объектов или размер пространственных областей и т.д., включенных в SPC, в зависимости от того, представляет объект собой внутренний объект или наружный объект. Следует отметить, что устройство кодирования и устройство декодирования кодируют или декодируют внутреннюю GOS и наружную GOS, имеющие близкие координаты, таким способом, что эти GOS приближаются друг к другу в мире, и ассоциирует их идентификаторы друг с другом для кодирования и декодирования.
[0148] Вариант 2 осуществления
При использовании кодированных данных облака точек в фактическом устройстве или услуге, желательно, если необходимая информация передается/принимается в соответствии с надлежащим использованием, чтобы уменьшать полосу пропускания сети. Тем не менее, отсутствует и такая функциональность в структуре кодирования трехмерных данных, и способ кодирования для нее.
[0149] Настоящий вариант осуществления описывает способ кодирования трехмерных данных и устройство кодирования трехмерных данных для предоставления функциональности передачи/приема только необходимой информации в кодированных данных облака трехмерных точек в соответствии с надлежащим использованием, а также способ декодирования трехмерных данных и устройство декодирования трехмерных данных для декодирования таких кодированных данных.
[0150] Воксел (VXL) с признаком, большим или равным данного количества, задается как воксел признаков (FVXL), и мир (WLD), состоящий из FVXL, задается как разреженный мир (SWLD). Фиг. 11 является схемой, показывающей примерные структуры разреженного мира и мира. SWLD включает в себя: FGOS, причем каждая из них представляет собой GOS, состоящую из FVXL; FSPC, причем каждое из них представляет собой SPC, состоящее из FVXL; и FVLM, причем каждый из них представляет собой VLM, состоящий из FVXL. Структура данных и структура прогнозирования FGOS, FSPC и FVLM могут быть идентичными структуре данных и структуре прогнозирования GOS, SPC и VLM.
[0151] Признак представляет информацию трехмерной позиции относительно VXL или информацию диапазона видимого света относительно позиции VXL. Большое число признаков обнаруживается, в частности, в углу, на краю и т.д. трехмерного объекта. Более конкретно, такой признак представляет собой трехмерный признак или признак диапазона видимого света, как описано ниже, но может представлять собой любой признак, который представляет информацию позиции, информацию яркости или цветовую информацию и т.д. относительно VXL.
[0152] В качестве трехмерных признаков используются признаки подписи гистограмм ориентаций (SHOT), признаки гистограмм точечных признаков (PFH) или признаки точечных пар (PPF).
[0153] SHOT-признаки получаются посредством разделения периферии VXL и вычисления внутреннего произведения опорной точки и нормального вектора каждой разделенной области, чтобы представлять результат вычисления в качестве гистограммы. SHOT-признаки характеризуются посредством большого числа размерностей и высокоуровневого представления признаков.
[0154] PFH-признаки получаются посредством выбора большого числа двух точечных пар около VXL и вычисления нормального вектора и т.д. из каждых двух точечных пар, чтобы представлять результат вычисления в качестве гистограммы. PFH-признаки представляют собой признаки гистограмм и в силу этого характеризуются посредством устойчивости к в известной степени искажения, а также посредством высокоуровневого представления признаков.
[0155] PPF-признаки получаются посредством использования нормального вектора и т.д. для каждых двух точек VXL. PPF-признаки, для которых используются все VXL, имеют устойчивость к окклюзии.
[0156] В качестве признаков диапазона видимого света, используются масштабно-инвариантное преобразование признаков (SIFT), ускоренные надежные признаки (SURF) или гистограмма ориентированных градиентов (HOG) и т.д., которые используют информацию относительно изображения, такую как информация градиента яркости.
[0157] SWLD формируется посредством вычисления вышеописанных признаков соответствующих VXL в WLD для того, чтобы извлекать FVXL. Здесь, SWLD может обновляться каждый раз, когда обновляется WLD, или может регулярно обновляться после истечения определенного периода времени, независимо от времени, когда обновляется WLD.
[0158] SWLD может формироваться для каждого типа признаков. Например, различные SWLD могут формироваться для соответствующих типов признаков, такие как SWLD1 на основе SHOT-признаков и SWLD2 на основе признаков SIFT, так что SWLD избирательно используются в соответствии с надлежащим использованием. Кроме того, вычисленный признак каждого FVXL может храниться в каждом FVXL в качестве информации признаков.
[0159] Далее описывается использование разреженного мира (SWLD). SWLD включает в себя только вокселы признаков (FVXL), и в силу этого его размер данных меньше, в общем, размера WLD, который включает в себя все VXL.
[0160] В варианте применения, который использует признаки для определенной цели, использование информации относительно SWLD вместо WLD уменьшает время, требуемое для того, чтобы считывать данные с жесткого диска, а также полосу пропускания и время, требуемое для передачи данных по сети. Например, WLD и SWLD хранятся на сервере в качестве картографической информации таким образом, что картографическая информация, которая должна отправляться, выбирается между WLD и SWLD в соответствии с запросом от клиента. Это уменьшает полосу пропускания сети и время, требуемое для передачи данных. Ниже поясняются более конкретные примеры.
[0161] Фиг. 12 и фиг. 13 являются схемами, показывающими примеры использования SWLD и WLD. Как показывает фиг. 12, когда клиент 1, который представляет собой установленное в транспортном средстве устройство, требует картографическую информацию, чтобы использовать ее для определения собственного местоположения, клиент 1 отправляет на сервер запрос на получение картографических данных для оценки собственного местоположения (S301). Сервер отправляет в клиент 1 SWLD в ответ на запрос на получение (S302). Клиент 1 использует принимаемый SWLD для того, чтобы определять собственное местоположение (S303). Таким образом, клиент 1 получает VXL-информацию относительно периферии клиента 1 через различные средства, включающие в себя датчик расстояния, такой как, дальномер, а также стереокамеру и комбинацию множества монокулярных камер. Клиент 1 затем оценивает информацию собственного местоположения из полученной VXL-информации и SWLD. Здесь, информация собственного местоположения включает в себя информацию трехмерной позиции, ориентацию и т.д. клиента 1.
[0162] Как показывает фиг. 13, когда клиент 2, который представляет собой установленное в транспортном средстве устройство, требует картографическую информацию, чтобы использовать ее для рендеринга карты, такой как трехмерная карта, клиент 2 отправляет на сервер запрос на получение картографических данных для рендеринга карт (S311). Сервер отправляет в клиент 2 WLD в ответ на запрос на получение (S312). Клиент 2 использует принимаемый WLD для того, чтобы подготавливать посредством рендеринга карту (S313). Таким образом, клиент 2 использует, например, изображение, которое клиент 2 захватывает посредством камеры для съемки в диапазоне видимого света и т.д., и WLD, полученный из сервера, чтобы создавать изображение для рендеринга, и подготавливает посредством рендеринга такое созданное изображение на экране автомобильной навигационной системы и т.д.
[0163] Как описано выше, сервер отправляет в клиент SWLD, когда признаки соответствующих VXL главным образом требуются, к примеру, в случае оценки собственного местоположения, и отправляет в клиент WLD, когда подробная VXL-информация требуется, к примеру, в случае рендеринга карт. Это обеспечивает возможность эффективной отправки/приема картографических данных.
[0164] Следует отметить, что клиент может проводить самооценку в отношении того, что из SWLD и WLD необходимо, и запрашивать сервер на предмет того, чтобы отправлять SWLD или WLD. Кроме того, сервер может проводить оценку того, что из SWLD и WLD следует отправлять, в соответствии с состоянием клиента или сети.
[0165] Далее описывается способ переключения отправки/приема между разреженным миром (SWLD) и миром (WLD).
[0166] То, следует принимать WLD или SWLD, может переключаться в соответствии с полосой пропускания сети. Фиг. 14 является схемой, показывающей примерную операцию в таком случае. Например, когда используется низкоскоростная сеть, что ограничивает применимую полосу пропускания сети, к примеру, в окружении по стандарту долгосрочного развития (LTE), клиент осуществляет доступ к серверу по низкоскоростной сети (S321) и получает SWLD из сервера в качестве картографической информации (S322). Между тем, когда используется высокоскоростная сеть, которая имеет адекватно широкую полосу пропускания сети, к примеру, в Wi-Fi-окружении, клиент осуществляет доступ к серверу по высокоскоростной сети (S323) и получает WLD из сервера (S324). Это позволяет клиенту получать соответствующую картографическую информацию в соответствии с полосой пропускания сети, которую использует такой клиент.
[0167] Более конкретно, клиент принимает SWLD по LTE-сети на улице и получает WLD по Wi-Fi-сети в закрытом помещении, к примеру, в инфраструктурном объекте. Это позволяет клиенту получать более подробную картографическую информацию относительно окружения в помещениях.
[0168] Как описано выше, клиент может запрашивать WLD или SWLD в соответствии с полосой пропускания сети, которую использует такой клиент. Альтернативно, клиент может отправлять на сервер информацию, указывающую полосу пропускания сети, которую использует такой клиент, и сервер может отправлять в клиент данные (WLD или SWLD), подходящие для такого клиента, в соответствии с информацией. Альтернативно, сервер может идентифицировать полосу пропускания сети, которую использует клиент, и отправлять в клиент данные (WLD или SWLD), подходящие для такого клиента.
[0169] Кроме того, то, следует принимать WLD или SWLD, может переключаться в соответствии со скоростью движения. Фиг. 15 является схемой, показывающей примерную операцию в таком случае. Например, при движении на высокой скорости (S331), клиент принимает SWLD из сервера (S332). Между тем, при движении на низкой скорости (S333), клиент принимает WLD из сервера (S334). Это позволяет клиенту получать картографическую информацию, подходящую для скорости, при уменьшении полосы пропускания сети. Более конкретно, при движении по скоростной автомагистрали, клиент принимает SWLD с небольшим объемом данных, что обеспечивает обновление приблизительной картографической информации с соответствующей скоростью. Между тем, при движении по общей дороге, клиент принимает WLD, который обеспечивает получение более подробной картографической информации.
[0170] Как описано выше, клиент может запрашивать сервер на предмет WLD или SWLD в соответствии со скоростью движения такого клиента. Альтернативно, клиент может отправлять на сервер информацию, указывающую скорость движения такого клиента, и сервер может отправлять в клиент данные (WLD или SWLD), подходящие для такого клиента, в соответствии с информацией. Альтернативно, сервер может идентифицировать скорость движения клиента, чтобы отправлять данные (WLD или SWLD), подходящие для такого клиента.
[0171] Кроме того, клиент может получать, из сервера, SWLD сначала, из которого клиент может получать WLD важной области. Например, при получении картографической информации, клиент сначала получает SWLD для приблизительной картографической информации, из которой клиент сужается до области, в которой такие признаки, как здания, светофоры или люди, появляются на высокой частоте, так что клиент может позднее получать WLD такой суженной области. Это позволяет клиенту получать подробную информацию относительно необходимой области, при уменьшении объема данных, принимаемых из сервера.
[0172] Сервер также может создавать из WLD различные SWLD для соответствующих объектов, и клиент может принимать SWLD в соответствии с надлежащим использованием. Это уменьшает полосу пропускания сети. Например, сервер распознает людей или автомобили в WLD заранее и создает SWLD людей и SWLD автомобилей. Клиент, при желании получать информацию относительно людей около клиента, принимает SWLD людей и, при желании получать информацию относительно автомобилей, принимает SWLD автомобилей. Такие типы SWLD могут отличаться посредством информации (флага или типа и т.д.), добавляемой в заголовок, и т.д.
[0173] Далее описываются структура и последовательность операций устройства кодирования трехмерных данных (например, сервера) согласно настоящему варианту осуществления. Фиг. 16 является блок-схемой устройства 400 кодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 17 является блок-схемой последовательности операций способа для процессов кодирования трехмерных данных, выполняемых посредством устройства 400 кодирования трехмерных данных.
[0174] Устройство 400 кодирования трехмерных данных, показанное на фиг. 16, кодирует входные трехмерные данные 411, за счет этого формируя кодированные трехмерные данные 413 и кодированные трехмерные данные 414, каждые из которых представляют собой кодированный поток. Здесь, кодированные трехмерные данные 413 представляют собой кодированные трехмерные данные, соответствующие WLD, и кодированные трехмерные данные 414 представляют собой кодированные трехмерные данные, соответствующие SWLD. Такое устройство 400 кодирования трехмерных данных включает в себя модуль 401 получения, модуль 402 определения областей кодирования, SWLD-модуль 403 извлечения, WLD-кодер 404 и SWLD-кодер 405.
[0175] Во-первых, как показывает фиг. 17, модуль 401 получения получает входные трехмерные данные 411, которые представляют собой данные точечных групп в трехмерном пространстве (S401).
[0176] Затем, модуль 402 определения областей кодирования определяет текущую пространственную область для кодирования на основе пространственной области, в которой данные облаков точек присутствуют (S402).
[0177] Затем, SWLD-модуль 403 извлечения задает текущую пространственную область в качестве WLD и вычисляет признак из каждого VXL, включенного в WLD. Затем SWLD-модуль 403 извлечения извлекает VXL, имеющие количество признаков, большее или равное предварительно определенному пороговому значению, задает извлеченные VXL в качестве FVXL и добавляет такие FVXL в SWLD, за счет этого формируя извлеченные трехмерные данные 412 (S403). Другими словами, извлеченные трехмерные данные 412, имеющие количество признаков, большее или равное пороговому значению, извлекаются из входных трехмерных данных 411.
[0178] Затем, WLD-кодер 404 кодирует входные трехмерные данные 411, соответствующие WLD, за счет этого формируя кодированные трехмерные данные 413, соответствующие WLD (S404). Таким образом, WLD-кодер 404 добавляет в заголовок кодированных трехмерных данных 413 информацию, которая отличает то, что такие кодированные трехмерные данные 413 представляют собой поток, включающий в себя WLD.
[0179] SWLD-кодер 405 кодирует извлеченные трехмерные данные 412, соответствующие SWLD, за счет этого формируя кодированные трехмерные данные 414, соответствующие SWLD (S405). Таким образом, SWLD-кодер 405 добавляет в заголовок кодированных трехмерных данных 414 информацию, которая отличает то, что такие кодированные трехмерные данные 414 представляют собой поток, включающий в себя SWLD.
[0180] Следует отметить, что процесс формирования кодированных трехмерных данных 413 и процесс формирования кодированных трехмерных данных 414 могут выполняться в обратном порядке. Также следует отметить, что часть или все эти процессы могут выполняться параллельно.
[0181] Параметр "world_type" задается, например, в качестве информации, добавляемой в каждый заголовок кодированных трехмерных данных 413 и кодированных трехмерных данных 414; world_type=0 указывает то, что поток включает в себя WLD, и world_type=1 указывает то, что поток включает в себя SWLD. Увеличенное число значений может дополнительно назначаться, чтобы задавать большее число типов, например, world_type=2. Кроме того, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 могут включать в себя указанный флаг. Например, кодированным трехмерным данным 414 может назначаться флаг, указывающий то, что такой поток включает в себя SWLD. В таком случае, устройство декодирования может отличать то, представляет такой поток собой поток, включающий в себя WLD, или поток, включающий в себя SWLD, в соответствии с присутствием/отсутствием флага.
[0182] Кроме того, способ кодирования, используемый посредством WLD-кодера 404 для того, чтобы кодировать WLD, может отличаться от способа кодирования, используемого посредством SWLD-кодера 405 для того, чтобы кодировать SWLD.
[0183] Например, данные SWLD прореживаются и в силу этого могут иметь более низкую корреляцию с данными окружения, чем корреляция WLD. По этой причине, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование может более предпочтительно выполняться в способе кодирования, используемом для SWLD, чем в способе кодирования, используемом для WLD.
[0184] Кроме того, способ кодирования, используемый для SWLD, и способ кодирования, используемый для WLD, могут представлять трехмерные позиции по-разному. Например, трехмерные координаты могут использоваться для того, чтобы представлять трехмерные позиции FVXL в SWLD, и дерево октантов, описанное ниже, может использоваться для того, чтобы представлять трехмерные позиции в WLD, и наоборот.
[0185] Кроме того, SWLD-кодер 405 выполняет кодирование таким способом, что кодированные трехмерные данные 414 SWLD имеют меньший размер данных, чем размер данных для кодированных трехмерных данных 413 WLD. SWLD может иметь более низкую корреляцию между данными, например, чем корреляция для WLD, как описано выше. Это может приводить к сниженной эффективности кодирования и в силу этого к кодированным трехмерным данным 414, имеющим больший размер данных, чем размер данных для кодированных трехмерных данных 413 WLD. Когда размер данных для результирующих кодированных трехмерных данных 414 превышает размер данных для кодированных трехмерных данных 413 WLD, SWLD-кодер 405 выполняет кодирование снова, чтобы повторно формировать кодированные трехмерные данные 414, имеющие уменьшенный размер данных.
[0186] Например, SWLD-модуль 403 извлечения повторно формирует извлеченные трехмерные данные 412, имеющие сокращенное число ключевых точек, которые должны извлекаться, и SWLD-кодер 405 кодирует такие извлеченные трехмерные данные 412. Альтернативно, SWLD-кодер 405 может выполнять более приблизительное квантование. Более приблизительное квантование достигается, например, посредством округления данных на самом нижнем уровне в структуре в виде дерева октантов, описанной ниже.
[0187] При провале попытки снижать размер данных для кодированных трехмерных данных 414 SWLD до меньше размера данных для кодированных трехмерных данных 413 WLD, SWLD-кодер 405 может не формировать кодированные трехмерные данные 414 SWLD. Альтернативно, кодированные трехмерные данные 413 WLD могут копироваться в качестве кодированных трехмерных данных 414 SWLD. Другими словами, кодированные трехмерные данные 413 WLD могут использоваться как есть в качестве кодированных трехмерных данных 414 SWLD.
[0188] Далее описываются структура и последовательность операций устройства декодирования трехмерных данных (например, клиента) согласно настоящему варианту осуществления. Фиг. 18 является блок-схемой устройства 500 декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 19 является блок-схемой последовательности операций способа для процессов декодирования трехмерных данных, выполняемых посредством устройства 500 декодирования трехмерных данных.
[0189] Устройство 500 декодирования трехмерных данных, показанное на фиг. 18, декодирует кодированные трехмерные данные 511, за счет этого формируя декодированные трехмерные данные 512 или декодированные трехмерные данные 513. Кодированные трехмерные данные 511 здесь, например, представляют собой кодированные трехмерные данные 413 или кодированные трехмерные данные 414, сформированные посредством устройства 400 кодирования трехмерных данных.
[0190] Такое устройство 500 декодирования трехмерных данных включает в себя модуль 501 получения, анализатор 502 заголовков, WLD-декодер 503 и SWLD-декодер 504.
[0191] Во-первых, как показывает фиг. 19, модуль 501 получения получает кодированные трехмерные данные 511 (S501). Затем, анализатор 502 заголовков анализирует заголовок кодированных трехмерных данных 511, чтобы идентифицировать то, представляют кодированные трехмерные данные 511 собой поток, включающий в себя WLD, или поток, включающий в себя SWLD (S502). Например, на вышеописанный параметр world_type ссылаются при выполнении такой идентификации.
[0192] Когда кодированные трехмерные данные 511 представляют собой поток, включающий в себя WLD ("Да" на S503), WLD-декодер 503 декодирует кодированные трехмерные данные 511, за счет этого формируя декодированные трехмерные данные 512 WLD (S504). Между тем, когда кодированные трехмерные данные 511 представляют собой поток, включающий в себя SWLD ("Нет" на S503), SWLD-декодер 504 декодирует кодированные трехмерные данные 511, за счет этого формируя декодированные трехмерные данные 513 SWLD (S505).
[0193] Кроме того, как и в случае устройства кодирования, способ декодирования, используемый посредством WLD-декодера 503 для того, чтобы декодировать WLD, может отличаться от способа декодирования, используемого посредством SWLD-декодера 504 для того, чтобы декодировать SWLD. Например, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование может более предпочтительно выполняться в способе декодирования, используемом для SWLD, чем в способе декодирования, используемом для WLD.
[0194] Кроме того, способ декодирования, используемый для SWLD, и способ декодирования, используемый для WLD, могут представлять трехмерные позиции по-разному. Например, трехмерные координаты могут использоваться для того, чтобы представлять трехмерные позиции FVXL в SWLD, и дерево октантов, описанное ниже, может использоваться для того, чтобы представлять трехмерные позиции в WLD, и наоборот.
[0195] Далее описывается представление в виде дерева октантов, которое представляет собой способ представления трехмерных позиций. VXL-данные, включенные в трехмерных данных, преобразуются в структуру в виде дерева октантов перед кодированием. Фиг. 20 является схемой, показывающей примерные VXL в WLD. Фиг. 21 является схемой, показывающей структуру в виде дерева октантов WLD, показанного на фиг. 20. Пример, показанный на фиг. 20, иллюстрирует три VXL 1-3, которые включают в себя точечные группы (далее называются "эффективными VXL"). Как показывает фиг. 21, структура в виде дерева октантов задается из узлов и листьев. Каждый узел имеет максимум восемь узлов или листьев. Каждый лист имеет VXL-информацию. Здесь, из листьев, показанных на фиг. 21, лист 1, лист 2 и лист 3 представляют VXL1, VXL2 и VXL3, показанные на фиг. 20, соответственно.
[0196] Более конкретно, каждый узел и каждый лист соответствуют трехмерной позиции. Узел 1 соответствует всему блоку, показанному на фиг. 20. Блок, который соответствует узлу 1, разделяется на восемь блоков. Из этих восьми блоков, блоки, включающие в себя эффективные VXL, задаются в качестве узлов, в то время как другие блоки задаются в качестве листьев. Каждый блок, который соответствует узлу, дополнительно разделяется на восемь узлов или листьев. Эти процессы повторяются число раз, которое равно числу уровней в структуре в виде дерева октантов. Все блоки на самом нижнем уровне задаются в качестве листьев.
[0197] Фиг. 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.
[0198] Далее описываются варьирования настоящего варианта осуществления.
[0199] Для оценки собственного местоположения, например, клиент, представляющий собой установленное в транспортном средстве устройство и т.д., может принимать SWLD из сервера, чтобы использовать такой SWLD для того, чтобы оценивать собственное местоположение. Между тем, для обнаружения помех, клиент может обнаруживать помехи посредством использования трехмерной информации относительно периферии, полученной посредством такого клиента через различные средства, включающие в себя датчик расстояния, такой как дальномер, а также стереокамеру и комбинацию множества монокулярных камер.
[0200] В общем, SWLD с меньшей вероятностью должен включать VXL-данные относительно плоской области. В связи с этим, сервер может хранить мир подвыборок (subWLD), полученный посредством субдискретизации WLD для обнаружения статических помех, и отправлять в клиент SWLD и subWLD. Это позволяет клиенту выполнять оценку собственного местоположения и обнаружение помех на стороне клиента, при уменьшении полосы пропускания сети.
[0201] Когда клиент подготавливает посредством рендеринга трехмерные картографические данные на высокой скорости, картографическая информация, имеющая ячеистую структуру, является более полезной в некоторых случаях. В связи с этим, сервер может формировать ячеистую сеть из WLD, с тем чтобы хранить его заранее в качестве ячеистого мира (MWLD). Например, при желании выполнять приблизительный трехмерный рендеринг, клиент принимает MWLD, а при желании выполнять детализированный трехмерный рендеринг, клиент принимает WLD. Это уменьшает полосу пропускания сети.
[0202] В вышеприведенном описании, сервер задает, в качестве FVXL, VXL, имеющие количество признаков, большее или равное пороговому значению, но сервер может вычислять FVXL посредством другого способа. Например, сервер может проводить оценку того, что VXL, VLM, SPC или GOS, которая составляет светофор или перекресток и т.д., необходимы для оценки собственного местоположения, помощи при вождении или беспилотного вождения и т.д. и включает такую VXL, VLM, SPC или GOS в SWLD в качестве FVXL, FVLM, FSPC или FGOS. Такое проведение оценки может быть осуществляться вручную. Кроме того, FVXL и т.д., которые заданы на основе количества признаков, могут добавляться в FVXL и т.д., полученные посредством вышеописанного способа. Другими словами, SWLD-модуль 403 извлечения дополнительно может извлекать, из входных трехмерных данных 411, данные, соответствующие объекту, имеющему предварительно определенный атрибут, в качестве извлеченных трехмерных данных 412.
[0203] Кроме того, то, что VXL, VLM, SPC или GOS необходимы для такого намеченного использования, может помечаться отдельно от признаков. Сервер может отдельно хранить, в качестве верхнего слоя SWLD (например, мира полос движения), FVXL светофора или перекрестка и т.д., необходимого для оценки собственного местоположения, помощи при вождении или беспилотного вождения и т.д.
[0204] Сервер также может добавлять атрибут в VXL в WLD на основе произвольного доступа или на основе предварительно определенной единицы. Атрибут, например, включает в себя информацию, указывающую то, необходимы или нет VXL для оценки собственного местоположения, либо информацию, указывающую то, являются или нет VXL важными в качестве информации трафика, такой как светофор или перекресток и т.д. Атрибут также может включать соответствие между VXL и признаками (перекресток или дорога и т.д.) в информацию полос движения (в файлы географических данных (GDF) и т.д.).
[0205] Способ, как описано ниже, может использоваться для того, чтобы обновлять WLD или SWLD.
[0206] Информация обновления, указывающая изменения и т.д. касательно человека, дорожных работ или древовидной линии (для грузовиков), выгружается на сервер в качестве точечных групп или метаданных. Сервер обновляет WLD на основе такой загруженной информации и затем обновляет SWLD посредством использования обновленного WLD.
[0207] Клиент, при обнаружении рассогласования между трехмерной информацией, которую такой клиент формирует во время оценки собственного местоположения, и трехмерной информацией, принимаемой из сервера, может отправлять на сервер трехмерную информацию, которую такой клиент формирует, вместе с уведомлением касательно обновления. В таком случае, сервер обновляет SWLD посредством использования WLD. Когда SWLD не должен обновляться, сервер проводит такую оценку, что непосредственно WLD является устаревшим.
[0208] В вышеприведенном описании, информация, которая отличает то, представляет кодированный поток собой кодированный поток WLD или SWLD, добавляется в качестве информации заголовка кодированного потока. Тем не менее, когда предусмотрено множество типов миров, таких как ячеистый мир и мир полос движения, информация, которая отличает эти типы миров, может добавляться в информацию заголовка. Кроме того, когда имеются множество SWLD с различными количествами признаков, информация, которая отличает соответствующие SWLD, может добавляться в информацию заголовка.
[0209] В вышеприведенном описании, SWLD состоит из FVXL, но SWLD может включать в себя VXL, для которых не проведена оценка в качестве FVXL. Например, SWLD может включать в себя смежный VXL, используемый для того, чтобы вычислять признак FVXL. Это позволяет клиенту вычислять признак FVXL при приеме SWLD, даже в случае, если информация признаков не добавляется в каждый FVXL SWLD. В таком случае, SWLD может включать в себя информацию, которая отличает то, представляет каждый VXL собой FVXL или VXL.
[0210] Как описано выше, устройство 400 кодирования трехмерных данных извлекает, из входных трехмерных данных 411 (первых трехмерных данных), извлеченные трехмерные данные 412 (вторые трехмерные данные), имеющие количество признаков, большее или равное пороговому значению, и кодирует извлеченные трехмерные данные 412, чтобы формировать кодированные трехмерные данные 414 (первые кодированные трехмерные данные).
[0211] Это устройство 400 кодирования трехмерных данных формирует кодированные трехмерные данные 414, которые получаются посредством кодирования данных, имеющих количество признаков, большее или равное пороговому значению. Это уменьшает объем данных по сравнению со случаем, в котором входные трехмерные данные 411 кодируются как есть. Устройство 400 кодирования трехмерных данных за счет этого допускает уменьшение объема данных, которые должны передаваться.
[0212] Устройство 400 кодирования трехмерных данных дополнительно кодирует входные трехмерные данные 411, чтобы формировать кодированные трехмерные данные 413 (вторые кодированные трехмерные данные).
[0213] Это устройство 400 кодирования трехмерных данных обеспечивает избирательную передачу кодированных трехмерных данных 413 и кодированных трехмерных данных 414, в соответствии, например, с надлежащим использованием и т.д.
[0214] Кроме того, извлеченные трехмерные данные 412 кодируются посредством первого способа кодирования, и входные трехмерные данные 411 кодируются посредством второго способа кодирования, отличающегося от первого способа кодирования.
[0215] Это устройство 400 кодирования трехмерных данных обеспечивает использование способа кодирования, подходящего для каждых из входных трехмерных данных 411 и извлеченных трехмерных данных 412.
[0216] Кроме того, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование более предпочтительно выполняется в первом способе кодирования, чем во втором способе кодирования.
[0217] Это устройство 400 кодирования трехмерных данных обеспечивает возможность более предпочтительного выполнения взаимного прогнозирования для извлеченных трехмерных данных 412, в которых смежные элементы данных с большой вероятностью имеют низкую корреляцию.
[0218] Кроме того, первый способ кодирования и второй способ кодирования представляют трехмерные позиции по-разному. Например, второй способ кодирования представляет трехмерные позиции посредством дерева октантов, и первый способ кодирования представляет трехмерные позиции посредством трехмерных координат.
[0219] Это устройство 400 кодирования трехмерных данных обеспечивает возможность использования более подходящего способа для того, чтобы представлять трехмерные позиции трехмерных данных с учетом разности числа включенных элементов данных (числа VXL или FVXL).
[0220] Кроме того, по меньшей мере, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 включают в себя идентификатор, указывающий то, представляют кодированные трехмерные данные собой кодированные трехмерные данные, полученные посредством кодирования входных трехмерных данных 411, или кодированные трехмерные данные, полученные посредством кодирования части входных трехмерных данных 411. Другими словами, такой идентификатор указывает то, представляют кодированные трехмерные данные собой кодированные трехмерные данные 413 WLD или кодированные трехмерные данные 414 SWLD.
[0221] Это обеспечивает возможность устройству декодирования легко проводить оценку в отношении того, представляют полученные кодированные трехмерные данные собой кодированные трехмерные данные 413 или кодированные трехмерные данные 414.
[0222] Кроме того, устройство 400 кодирования трехмерных данных кодирует извлеченные трехмерные данные 412 таким способом, что кодированные трехмерные данные 414 имеют меньший объем данных, чем объем данных для кодированных трехмерных данных 413.
[0223] Это устройство 400 кодирования трехмерных данных обеспечивает возможность кодированным трехмерным данным 414 иметь меньший объем данных, чем объем данных для кодированных трехмерных данных 413.
[0224] Кроме того, устройство 400 кодирования трехмерных данных дополнительно извлекает данные, соответствующие объекту, имеющему предварительно определенный атрибут, из входных трехмерных данных 411 в качестве извлеченных трехмерных данных 412. Объект, имеющий предварительно определенный атрибут, например, представляет собой объект, необходимый для оценки собственного местоположения, помощи при вождении или беспилотного вождения и т.д., либо более конкретно, светофор, перекресток и т.д.
[0225] Это устройство 400 кодирования трехмерных данных допускает формирование кодированных трехмерных данных 414, которые включают в себя данные, требуемые посредством устройства декодирования.
[0226] Кроме того, устройство 400 кодирования трехмерных данных (сервер) дополнительно отправляет, в клиент, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 в соответствии с состоянием клиента.
[0227] Это устройство 400 кодирования трехмерных данных допускает отправку соответствующих данных в соответствии с состоянием клиента.
[0228] Кроме того, состояние клиента включает в себя одно из состояния связи (например, полосы пропускания сети) клиента и скорости движения клиента.
[0229] Кроме того, устройство 400 кодирования трехмерных данных дополнительно отправляет, в клиент, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 в соответствии с запросом от клиента.
[0230] Это устройство 400 кодирования трехмерных данных допускает отправку соответствующих данных в соответствии с запросом от клиента.
[0231] Кроме того, устройство 500 декодирования трехмерных данных согласно настоящему варианту осуществления декодирует кодированные трехмерные данные 413 или кодированные трехмерные данные 414, сформированные посредством устройства 400 кодирования трехмерных данных, описанного выше.
[0232] Другими словами, устройство 500 декодирования трехмерных данных декодирует, посредством первого способа декодирования, кодированные трехмерные данные 414, полученные посредством кодирования извлеченных трехмерных данных 412, имеющих количество признаков, большее или равное пороговому значению, причем извлеченные трехмерные данные 412 извлекаются из входных трехмерных данных 411. Устройство 500 декодирования трехмерных данных также декодирует, посредством второго способа декодирования, кодированные трехмерные данные 413, полученные посредством кодирования входных трехмерных данных 411, причем второй способ декодирования отличается от первого способа декодирования.
[0233] Это устройство 500 декодирования трехмерных данных обеспечивает избирательный прием кодированных трехмерных данных 414, полученных посредством кодирования данных, имеющих количество признаков, большее или равное пороговому значению, и кодированных трехмерных данных 413, в соответствии, например, с надлежащим использованием и т.д. Устройство 500 декодирования трехмерных данных за счет этого допускает уменьшение объема данных, которые должны передаваться. Такое устройство 500 декодирования трехмерных данных дополнительно обеспечивает использование способа декодирования, подходящего для каждых из входных трехмерных данных 411 и извлеченных трехмерных данных 412.
[0234] Кроме того, из внутреннего прогнозирования и взаимного прогнозирования, взаимное прогнозирование более предпочтительно выполняется в первом способе декодирования, чем во втором способе декодирования.
[0235] Это устройство 500 декодирования трехмерных данных обеспечивает возможность более предпочтительного выполнения взаимного прогнозирования для извлеченных трехмерных данных, в которых смежные элементы данных с большой вероятностью имеют низкую корреляцию.
[0236] Кроме того, первый способ декодирования и второй способ декодирования представляют трехмерные позиции по-разному. Например, второй способ декодирования представляет трехмерные позиции посредством дерева октантов, и первый способ декодирования представляет трехмерные позиции посредством трехмерных координат.
[0237] Это устройство 500 декодирования трехмерных данных обеспечивает возможность использования более подходящего способа для того, чтобы представлять трехмерные позиции трехмерных данных с учетом разности числа включенных элементов данных (числа VXL или FVXL).
[0238] Кроме того, по меньшей мере, одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 включают в себя идентификатор, указывающий то, представляют кодированные трехмерные данные собой кодированные трехмерные данные, полученные посредством кодирования входных трехмерных данных 411, или кодированные трехмерные данные, полученные посредством кодирования части входных трехмерных данных 411. Устройство 500 декодирования трехмерных данных ссылается на такой идентификатор при идентификации между кодированными трехмерными данными 413 и кодированными трехмерными данными 414.
[0239] Это устройство 500 декодирования трехмерных данных допускает простое проведение оценки в отношении того, представляют полученные кодированные трехмерные данные собой кодированные трехмерные данные 413 или кодированные трехмерные данные 414.
[0240] Устройство 500 декодирования трехмерных данных дополнительно уведомляет сервер в отношении состояния клиента (устройства 500 декодирования трехмерных данных). Устройство 500 декодирования трехмерных данных принимает одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 из сервера, в соответствии с состоянием клиента.
[0241] Это устройство 500 декодирования трехмерных данных допускает прием соответствующих данных в соответствии с состоянием клиента.
[0242] Кроме того, состояние клиента включает в себя одно из состояния связи (например, полосы пропускания сети) клиента и скорости движения клиента.
[0243] Устройство 500 декодирования трехмерных данных дополнительно выполняет запрос сервера на предмет одних из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 и принимает одни из кодированных трехмерных данных 413 и кодированных трехмерных данных 414 из сервера, в соответствии с запросом.
[0244] Это устройство 500 декодирования трехмерных данных допускает прием соответствующих данных в соответствии с надлежащим использованием.
[0245] Вариант 3 осуществления
Настоящий вариант осуществления описывает способ передачи/приема трехмерных данных между транспортными средствами. Например, трехмерные данные передаются/принимаются между рассматриваемым транспортным средством и близлежащим транспортным средством.
[0246] Фиг. 24 является блок-схемой устройства 620 создания трехмерных данных согласно настоящему варианту осуществления. Такое устройство 620 создания трехмерных данных, которое включается, например, в рассматриваемое транспортное средство, объединяет первые трехмерные данные 632, созданные посредством устройства 620 создания трехмерных данных, с принимаемыми вторыми трехмерными данными 635, за счет этого создавая третьи трехмерные данные 636, имеющие более высокую плотность.
[0247] Такое устройство 620 создания трехмерных данных включает в себя модуль 621 создания трехмерных данных, модуль 622 определения диапазонов запросов, модуль 623 поиска, приемное устройство 624, декодер 625 и модуль 626 объединения.
[0248] Во-первых, модуль 621 создания трехмерных данных создает первые трехмерные данные 632 посредством использования информации 631 датчиков, обнаруженной посредством датчика, включенного в рассматриваемое транспортное средство. Затем, модуль 622 определения диапазонов запросов определяет диапазон запросов, который представляет собой диапазон трехмерного пространства, данных по которому недостаточно в созданных первых трехмерных данных 632.
[0249] Затем, модуль 623 поиска выполняет поиск близлежащего транспортного средства, имеющего трехмерные данные диапазона запросов, и отправляет информацию 633 диапазона запросов, указывающую диапазон запросов, в найденное близлежащее транспортное средство 601 (S623). Затем, приемное устройство 624 принимает кодированные трехмерные данные 634, которые представляют собой кодированный поток диапазона запросов, из близлежащего транспортного средства 601 (S624). Следует отметить, что модуль 623 поиска может без различия отправлять запросы во все транспортные средства, включенные в указанный диапазон, чтобы принимать кодированные трехмерные данные 634 из транспортного средства, которое отвечает на запрос. Модуль 623 поиска может отправлять запрос не только в транспортные средства, но также и в объект, такой как светофор и дорожный знак, и принимать кодированные трехмерные данные 634 из объекта.
[0250] Затем, декодер 625 декодирует принимаемые кодированные трехмерные данные 634, за счет этого получая вторые трехмерные данные 635. Затем, модуль 626 объединения объединяет первые трехмерные данные 632 со вторыми трехмерными данными 635, за счет этого создавая трехмерные данные 636, имеющие более высокую плотность.
[0251] Далее описываются структура и операции устройства 640 передачи трехмерных данных согласно настоящему варианту осуществления. Фиг. 25 является блок-схемой устройства 640 передачи трехмерных данных.
[0252] Устройство 640 передачи трехмерных данных включается, например, в вышеописанное близлежащее транспортное средство. Устройство 640 передачи трехмерных данных обрабатывает пятые трехмерные данные 652, созданные посредством близлежащего транспортного средства, в шестые трехмерные данные 654, запрашиваемые посредством рассматриваемого транспортного средства, кодирует шестые трехмерные данные 654, чтобы формировать кодированные трехмерные данные 634, и отправляет кодированные трехмерные данные 634 в рассматриваемое транспортное средство.
[0253] Устройство 640 передачи трехмерных данных включает в себя модуль 641 создания трехмерных данных, приемное устройство 642, модуль 643 извлечения, кодер 644 и передающее устройство 645.
[0254] Во-первых, модуль 641 создания трехмерных данных создает пятые трехмерные данные 652 посредством использования информации 651 датчиков, обнаруженной посредством датчика, включенного в близлежащее транспортное средство. Затем, приемное устройство 642 принимает информацию 633 диапазона запросов из рассматриваемого транспортного средства.
[0255] Затем, модуль 643 извлечения извлекает из пятых трехмерных данных 652 трехмерные данные диапазона запросов, указываемого посредством информации 633 диапазона запросов, за счет этого обрабатывая пятые трехмерные данные 652 в шестые трехмерные данные 654. Затем, кодер 644 кодирует шестые трехмерные данные 654, чтобы формировать кодированные трехмерные данные 643, которые представляют собой кодированный поток. После этого передающее устройство 645 отправляет кодированные трехмерные данные 634 в рассматриваемое транспортное средство.
[0256] Следует отметить, что хотя здесь описывается примерный случай, в котором рассматриваемое транспортное средство включает в себя устройство 620 создания трехмерных данных, и близлежащее транспортное средство включает в себя устройство 640 передачи трехмерных данных, каждое из транспортных средств может включать в себя функциональность как устройства 620 создания трехмерных данных, так и устройства 640 передачи трехмерных данных.
[0257] Вариант 4 осуществления
Настоящий вариант осуществления описывает операции, выполняемые в анормальных случаях, когда оценка собственного местоположения выполняется на основе трехмерной карты.
[0258] Трехмерная карта предположительно должна находить свое широкое применение в беспилотном вождении транспортного средства и автономном перемещении и т.д. мобильного объекта, такого как робот и летающий объект (например, беспилотный аппарат). Примерное средство для обеспечения возможности такого автономного перемещения включает в себя способ, в котором мобильный объект движется в соответствии с трехмерной картой при оценке собственного местоположения на карте (оценке собственного местоположения).
[0259] Оценка собственного местоположения обеспечивается посредством сопоставления трехмерной карты с трехмерной информацией относительно окрестности рассматриваемого транспортного средства (в дальнейшем называемой "самообнаруженными трехмерными данными"), полученной посредством датчика, оснащенного в рассматриваемом транспортном средстве, такого как дальномер (например, лидар) и стереокамера, чтобы оценивать местоположение рассматриваемого транспортного средства на трехмерной карте.
[0260] Как и в случае HD-карты, предлагаемой компанией HERE Technologies, например, трехмерная карта может включать в себя не только облако трехмерных точек, но также и двумерные картографические данные, такие как информация относительно форм дорог и перекрестков, или информацию, которая изменяется в реальном времени, такую как информация относительно затора трафика и аварий. Трехмерная карта включает в себя множество слоев, к примеру, слои трехмерных данных, двумерных данных и метаданных, которые изменяются в реальном времени, из числа которых устройство может получать или ссылаться только на необходимые данные.
[0261] Данные облаков точек могут представлять собой SWLD, как описано выше, или могут включать в себя данные точечных групп, которые отличаются от ключевых точек. Передача/прием данных облаков точек, по существу, выполняется в одной или более единиц произвольного доступа.
[0262] Способ, описанный ниже, используется в качестве способа сопоставления трехмерной карты с самообнаруженными трехмерными данными. Например, устройство сравнивает формы точечных групп в облаках точек друг друга и определяет то, что части, имеющие высокую степень подобия между ключевыми точками, соответствуют идентичной позиции. Когда трехмерная карта формируется посредством SWLD, устройство также выполняет сопоставление посредством сравнения ключевых точек, которые формируют SWLD, с трехмерными ключевыми точками, извлеченными из самообнаруженных трехмерных данных.
[0263] Здесь, чтобы обеспечивать высокоточную оценку собственного местоположения, должны удовлетворяться следующие потребности: (A) трехмерная карта и самообнаруженные трехмерные данные уже получены; и (B) их точности удовлетворяют предварительно определенному требованию. Тем не менее, один из (A) и (B) не может удовлетворяться в анормальных случаях, таких как случаи, описанные ниже.
[0264] 1. Трехмерная карта является недоступной для получения по связи.
[0265] 2. Трехмерная карта не присутствует, или полученная трехмерная карта повреждена.
[0266] 3. Датчик рассматриваемого транспортного средства является проблемным, или точность сформированных самообнаруженных трехмерных данных является недостаточной вследствие плохой погоды.
[0267] Далее описываются операции для того, чтобы преодолевать такие анормальные случаи. Нижеприведенное описание иллюстрирует примерный случай транспортного средства, но способ, описанный ниже, является применимым к мобильным объектам в целом, которые допускают автономное перемещение, таким как робот и беспилотный аппарат.
[0268] Далее описывается структура устройства обработки трехмерной информации и его операция согласно настоящему варианту осуществления, допускающему преодоление анормальных случаев относительно трехмерной карты или самообнаруженных трехмерных данных. Фиг. 26 является блок-схемой примерной структуры устройства 700 обработки трехмерной информации согласно настоящему варианту осуществления.
[0269] Устройство 700 обработки трехмерной информации оснащается, например, в мобильном объекте, таком как автомобиль. Как показано на фиг. 26, устройство 700 обработки трехмерной информации включает в себя модуль 701 получения трехмерных карт, модуль 702 получения самообнаруженных данных, модуль 703 проведения оценки анормальных случаев, модуль 704 определения операций преодоления и функциональный контроллер 705.
[0270] Следует отметить, что устройство 700 обработки трехмерной информации может включать в себя непроиллюстрированный двумерный или одномерный датчик, который обнаруживает структурный объект или мобильный объект около рассматриваемого транспортного средства, такой как камера, допускающая получение двумерных изображений, и датчик для одномерных данных с использованием ультразвука или лазера. Устройство 700 обработки трехмерной информации также может включать в себя непроиллюстрированный модуль связи, который получает трехмерную карту по сети мобильной связи, к примеру, по 4G и 5G, либо через связь между транспортными средствами или связь между транспортным средством и дорожной инфраструктурой.
[0271] Модуль 701 получения трехмерных карт получает трехмерную карту 711 окрестности маршрута движения. Например, модуль 701 получения трехмерных карт получает трехмерную карту 711 по сети мобильной связи либо через связь между транспортными средствами или связь между транспортным средством и дорожной инфраструктурой.
[0272] Затем, модуль 702 получения самообнаруженных данных получает самообнаруженные трехмерные данные 712 на основе информации датчиков. Например, модуль 702 получения самообнаруженных данных формирует самообнаруженные трехмерные данные 712 на основе информации датчиков, полученной посредством датчика, оснащенного в рассматриваемом транспортном средстве.
[0273] Затем, модуль 703 проведения оценки анормальных случаев осуществляет предварительно определенную проверку, по меньшей мере, одного из полученной трехмерной карты 711 и самообнаруженных трехмерных данных 712, чтобы обнаруживать анормальный случай. Другими словами, модуль 703 проведения оценки анормальных случаев проводит оценку в отношении того, является или нет, по меньшей мере, одно из полученной трехмерной карты 711 и самообнаруженных трехмерных данных 712 анормальным.
[0274] Когда анормальный случай обнаруживается, модуль 704 определения операций преодоления определяет операцию преодоления, чтобы преодолевать такой анормальный случай. Затем, функциональный контроллер 705 управляет работой каждой из единиц обработки, необходимых для того, чтобы выполнять операцию преодоления.
[0275] Между тем, когда анормальный случай не обнаруживается, устройство 700 обработки трехмерной информации завершает процесс.
[0276] Кроме того, устройство 700 обработки трехмерной информации оценивает местоположение транспортного средства, оснащенного устройством 700 обработки трехмерной информации, с использованием трехмерной карты 711 и самообнаруженных трехмерных данных 712. Затем, устройство 700 обработки трехмерной информации выполняет автоматическую работу транспортного средства посредством использования оцененного местоположения транспортного средства.
[0277] Как описано выше, устройство 700 обработки трехмерной информации получает, через канал связи, картографические данные (трехмерную карту 711), которые включают в себя первую информацию трехмерной позиции. Первая информация трехмерной позиции включает в себя, например, множество единиц произвольных доступа, каждая из которых представляет собой сборку, по меньшей мере, одного подпространства и является отдельно декодируемой, причем, по меньшей мере, одно подпространство имеет информацию трехмерных координат и служит в качестве единицы, в которой каждая из множества единиц произвольного доступа кодируется. Первая информация трехмерной позиции, например, представляет собой данные (SWLD), полученные посредством кодирования ключевых точек, каждая из которых имеет количество трехмерных признаков, большее или равное предварительно определенному пороговому значению.
[0278] Устройство 700 обработки трехмерной информации также формирует вторую информацию трехмерной позиции (самообнаруженные трехмерные данные 712) из информации, обнаруженной посредством датчика. Устройство 700 обработки трехмерной информации затем проводит оценку в отношении того, является или нет одна из первой информации трехмерной позиции и второй информации трехмерной позиции анормальной, посредством выполнения, для одной из первой информации трехмерной позиции и второй информации трехмерной позиции, процесса проведения оценки того, присутствует или нет анормальность.
[0279] Устройство 700 обработки трехмерной информации определяет операцию преодоления, чтобы преодолевать анормальность, когда проводится оценка одной из первой информации трехмерной позиции и второй информации трехмерной позиции как анормальной. Устройство 700 обработки трехмерной информации затем выполняет управление, которое требуется для того, чтобы выполнять операцию преодоления.
[0280] Эта структура обеспечивает возможность устройству 700 обработки трехмерной информации обнаруживать анормальность относительно одной из первой информации трехмерной позиции и второй информации трехмерной позиции и выполнять операцию преодоления для этого.
[0281] Вариант 5 осуществления
Настоящий вариант осуществления описывает способ и т.д. передачи трехмерных данных в едущее сзади транспортное средство.
[0282] Фиг. 27 является блок-схемой примерной структуры устройства 810 создания трехмерных данных согласно настоящему варианту осуществления. Такое устройство 810 создания трехмерных данных оснащается, например, в транспортном средстве. Устройство 810 создания трехмерных данных передает и принимает трехмерные данные в/из внешней облачной системы мониторинга трафика, едущего впереди транспортного средства или едущего сзади транспортного средства и создает и сохраняет трехмерные данные.
[0283] Устройство 810 создания трехмерных данных включает в себя приемное устройство 811 данных, модуль 812 связи, контроллер 813 приема, преобразователь 814 форматов, множество датчиков 815, модуль 816 создания трехмерных данных, синтезатор 817 трехмерных данных, устройство 818 хранения трехмерных данных, модуль 819 связи, контроллер 820 передачи, преобразователь 821 форматов и передающее устройство 822 данных.
[0284] Приемное устройство 811 данных принимает трехмерные данные 831 из облачной системы мониторинга трафика или едущего впереди транспортного средства. Трехмерные данные 831 включают в себя, например, информацию относительно области, необнаруживаемой посредством датчиков 815 рассматриваемого транспортного средства, такую как облако точек, видео в диапазоне видимого света, информация глубины, информация позиций датчиков и информация скорости.
[0285] Модуль 812 связи обменивается данными с облачной системой мониторинга трафика или едущим впереди транспортным средством, чтобы передавать запрос на передачу данных и т.д. в облачную систему мониторинга трафика или едущее впереди транспортное средство.
[0286] Контроллер 813 приема обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 812 связи, чтобы устанавливать связь с партнером по связи.
[0287] Преобразователь 814 форматов применяет преобразование формата и т.д. к трехмерным данным 831, принимаемым посредством приемного устройства 811 данных, чтобы формировать трехмерные данные 832. Преобразователь 814 форматов также распаковывает или декодирует трехмерные данные 831, когда трехмерные данные 831 сжимаются или кодируются.
[0288] Множество датчиков 815 представляет собой группу датчиков, таких как камеры для съемки в диапазоне видимого света и камеры для съемки в инфракрасном диапазоне, которые получают информацию за пределами транспортного средства и формируют информацию 833 датчиков. Информация 833 датчиков, например, представляет собой трехмерные данные, такие как облако точек (данные точечных групп), когда датчики 815 представляют собой лазерные датчики, такие как лидары. Следует отметить, что один датчик может служить в качестве множества датчиков 815.
[0289] Модуль 816 создания трехмерных данных формирует трехмерные данные 834 из информации 833 датчиков. Трехмерные данные 834 включают в себя, например, информацию, такую как облако точек, видео в диапазоне видимого света, информация глубины, информация позиций датчиков и информация скорости.
[0290] Синтезатор 817 трехмерных данных синтезирует трехмерные данные 834, созданные на основе информации 833 датчиков рассматриваемого транспортного средства, с трехмерными данными 832, созданными посредством облачной системы мониторинга трафика или едущего впереди транспортного средства и т.д., за счет этого формируя трехмерные данные 835 пространства, которое включает в себя пространство перед едущим впереди транспортным средством, необнаруживаемое посредством датчиков 815 рассматриваемого транспортного средства.
[0291] Устройство 818 хранения трехмерных данных сохраняет сформированные трехмерные данные 835 и т.д.
[0292] Модуль 819 связи обменивается данными с облачной системой мониторинга трафика или едущим сзади транспортным средством, чтобы передавать запрос на передачу данных и т.д. в облачную систему мониторинга трафика или едущее сзади транспортное средство.
[0293] Контроллер 820 передачи обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 819 связи, чтобы устанавливать связь с партнером по связи. Контроллер 820 передачи также определяет область передачи, которая представляет собой пространство трехмерных данных, которые должны передаваться, на основе информации формирования трехмерных данных относительно трехмерных данных 832, сформированных посредством синтезатора 817 трехмерных данных, и запроса на передачу данных из партнера по связи.
[0294] Более конкретно, контроллер 820 передачи определяет область передачи, которая включает в себя пространство перед рассматриваемым транспортным средством, необнаруживаемое посредством датчика едущего сзади транспортного средства, в ответ на запрос на передачу данных из облачной системы мониторинга трафика или едущего сзади транспортного средства. Контроллер 820 передачи, например, проводит оценку в отношении того, является или нет пространство допускающим передачу, или того, включает или нет уже передаваемое пространство в себя обновление, на основе информации формирования трехмерных данных, чтобы определять область передачи. Например, контроллер 820 передачи определяет, в качестве области передачи, область, которая представляет собой: область, указываемую посредством запроса на передачу данных; и область, соответствующие трехмерные данные 835 которой присутствуют. Контроллер 820 передачи затем уведомляет преобразователь 821 форматов в отношении формата, поддерживаемого посредством партнера по связи, и области передачи.
[0295] Из трехмерных данных 835, сохраненных в устройстве 818 хранения трехмерных данных, преобразователь 821 форматов преобразует трехмерные данные 836 области передачи в формат, поддерживаемый посредством конца приемного устройства, чтобы формировать трехмерные данные 837. Следует отметить, что преобразователь 821 форматов может сжимать или кодировать трехмерные данные 837, чтобы уменьшать объем данных.
[0296] Передающее устройство 822 данных передает трехмерные данные 837 в облачную систему мониторинга трафика или едущее сзади транспортное средство. Такие трехмерные данные 837 включают в себя, например, информацию относительно мертвой зоны, которая представляет собой область, скрытую из вида едущего сзади транспортного средства, такую как облако точек перед рассматриваемым транспортным средством, видео в диапазоне видимого света, информация глубины и информация позиций датчиков.
[0297] Следует отметить, что описан пример, в котором преобразователь 814 форматов и преобразователь 821 форматов выполняют преобразование формата и т.д., но преобразование формата может не выполняться.
[0298] При вышеприведенной структуре, устройство 810 создания трехмерных данных получает, из внешнего устройства, трехмерные данные 831 области, необнаруживаемой посредством датчиков 815 рассматриваемого транспортного средства, и синтезирует трехмерные данные 831 с трехмерными данными 834, которые основаны на информации 833 датчиков, обнаруженной посредством датчиков 815 рассматриваемого транспортного средства, за счет этого формируя трехмерные данные 835. Устройство 810 создания трехмерных данных за счет этого допускает формирование трехмерных данных диапазона, необнаруживаемого посредством датчиков 815 рассматриваемого транспортного средства.
[0299] Устройство 810 создания трехмерных данных также допускает передачу, в облачную систему мониторинга трафика или едущее сзади транспортное средство и т.д., трехмерных данных пространства, которое включает в себя пространство перед рассматриваемым транспортным средством, необнаруживаемое посредством датчика едущего сзади транспортного средства, в ответ на запрос на передачу данных из облачной системы мониторинга трафика или едущего сзади транспортного средства.
[0300] Вариант 6 осуществления
В варианте 5 осуществления, описывается пример, в котором клиентское устройство транспортного средства и т.п. передает трехмерные данные в другое транспортное средство или на сервер, к примеру, в облачную систему мониторинга трафика. В настоящем варианте осуществления, клиентское устройство передает информацию датчиков, полученную через датчик, на сервер или в клиентское устройство.
[0301] Сначала описывается структура системы согласно настоящему варианту осуществления. Фиг. 28 является схемой, показывающей структуру системы передачи/приема трехмерной карты и информации датчиков согласно настоящему варианту осуществления. Эта система включает в себя сервер 901 и клиентские устройства 902A и 902B. Следует отметить, что клиентские устройства 902A и 902B также называются "клиентским устройством 902", когда не проводится конкретное различение между ними.
[0302] Клиентское устройство 902, например, представляет собой установленное в транспортном средстве устройство, оснащенное в мобильном объекте, таком как транспортное средство. Сервер 901, например, представляет собой облачную систему мониторинга трафика и допускает обмен данными с множеством клиентских устройств 902.
[0303] Сервер 901 передает трехмерную карту, сформированную посредством облака точек, в клиентское устройство 902. Следует отметить, что структура трехмерной карты не ограничена облаком точек и также может представлять собой другую структуру, выражающую трехмерные данные, такую как ячеистая структура.
[0304] Клиентское устройство 902 передает информацию датчиков, полученную посредством клиентского устройства 902, на сервер 901. Информация датчиков включает в себя, например, по меньшей мере, одно из информации, полученной посредством лидара, изображения в диапазоне видимого света, инфракрасного изображения, изображения глубины, информации позиций датчиков или информации скорости датчиков.
[0305] Данные, которые должны передаваться и приниматься между сервером 901 и клиентским устройством 902, могут сжиматься, чтобы уменьшать объем данных, а также могут передаваться распакованными, чтобы поддерживать точность данных. При сжатии данных, можно использовать способ трехмерного сжатия в облаке точек, например, на основе структуры в виде дерева октантов. Можно использовать способ сжатия двумерных изображений в изображении в диапазоне видимого света, инфракрасном изображении и изображении глубины. Способ сжатия двумерных изображений, например, представляет собой MPEG-4 AVC или HEVC, стандартизированный посредством MPEG.
[0306] Сервер 901 передает трехмерную карту, управляемую посредством сервера 901, в клиентское устройство 902 в ответ на запрос на передачу на предмет трехмерной карты из клиентского устройства 902. Следует отметить, что сервер 901 также может передавать трехмерную карту без ожидания запроса на передачу на предмет трехмерной карты из клиентского устройства 902. Например, сервер 901 может широковещательно передавать трехмерную карту, по меньшей мере, в одно клиентское устройство 902, расположенное в предварительно определенном пространстве. Сервер 901 также может передавать трехмерную карту, подходящую для позиции клиентского устройства 902, с фиксированными временными интервалами в клиентское устройство 902, которое принимает запрос на передачу однократно. Сервер 901 также может передавать трехмерную карту, управляемую посредством сервера 901, в клиентское устройство 902 каждый раз, когда трехмерная карта обновляется.
[0307] Клиентское устройство 902 отправляет запрос на передачу на предмет трехмерной карты на сервер 901. Например, когда клиентское устройство 902 хочет выполнять оценку собственного местоположения во время движения, клиентское устройство 902 передает запрос на передачу на предмет трехмерной карты на сервер 901.
[0308] Следует отметить, что в следующих случаях клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901. Клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда трехмерная карта, сохраненная посредством клиентского устройства 902, является устаревшей. Например, клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда фиксированный период проходит с момента, когда трехмерная карта получается посредством клиентского устройства 902.
[0309] Клиентское устройство 902 также может отправлять запрос на передачу на предмет трехмерной карты на сервер 901 до фиксированного времени, когда клиентское устройство 902 выходит из пространства, показанного на трехмерной карте, сохраненной посредством клиентского устройства 902. Например, клиентское устройство 902 может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда клиентское устройство 902 расположено в пределах предварительно определенного расстояния от границы пространства, показанного на трехмерной карте, сохраненной посредством клиентского устройства 902. Когда тракт перемещения и скорость перемещения клиентского устройства 902 понимаются, время, когда клиентское устройство 902 выходит из пространства, показанного на трехмерной карте, сохраненной посредством клиентского устройства 902, может прогнозироваться на основе тракта перемещения и скорости перемещения клиентского устройства 902.
[0310] Клиентское устройство 902 также может отправлять запрос на передачу на предмет трехмерной карты на сервер 901, когда ошибка во время совмещения трехмерных данных и трехмерной карты, созданной из информации датчиков посредством клиентского устройства 902, находится, по меньшей мере, на фиксированном уровне.
[0311] Клиентское устройство 902 передает информацию датчиков на сервер 901 в ответ на запрос на передачу на предмет информации датчиков из сервера 901. Следует отметить, что клиентское устройство 902 может передавать информацию датчиков на сервер 901 без ожидания запроса на передачу на предмет информации датчиков из сервера 901. Например, клиентское устройство 902 может периодически передавать информацию датчиков в течение фиксированного периода, когда клиентское устройство 902 однократно принимает запрос на передачу на предмет информации датчиков из сервера 901. Клиентское устройство 902 может определять то, что имеется вероятность возникновения изменения трехмерной карты окружающей зоны клиентского устройства 902, и передавать эту информацию и информацию датчиков на сервер 901, когда ошибка во время совмещения трехмерных данных, созданных посредством клиентского устройства 902 на основе информации датчиков, и трехмерной карты, полученной из сервера 901, находится, по меньшей мере, на фиксированном уровне.
[0312] Сервер 901 отправляет запрос на передачу на предмет информации датчиков в клиентское устройство 902. Например, сервер 901 принимает информацию позиции, такую как GPS-информация, относительно клиентского устройства 902 из клиентского устройства 902. Сервер 901 отправляет запрос на передачу на предмет информации датчиков в клиентское устройство 902, чтобы формировать новую трехмерную карту, когда определяется то, что клиентское устройство 902 приближается к пространству, в котором трехмерная карта, управляемая посредством сервера 901, содержит мало информации, на основе информации позиции относительно клиентского устройства 902. Сервер 901 также может отправлять запрос на передачу на предмет информации датчиков, при желании (i) обновлять трехмерную карту, (ii) проверять дорожные условия во время снегопада, аварии и т.п., или (iii) проверять условия затора в движении, условия аварии/происшествия и т.п.
[0313] Клиентское устройство 902 может задавать объем данных информации датчиков, которая должна передаваться на сервер 901, в соответствии с условиями связи или полосой пропускания в ходе приема запроса на передачу на предмет информации датчиков, которая должна приниматься из сервера 901. Задание объема данных информации датчиков, которая должна передаваться на сервер 901, например, представляет собой увеличение/уменьшение непосредственно данных или надлежащий выбор способа сжатия.
[0314] Фиг. 29 является блок-схемой, показывающей примерную структуру клиентского устройства 902. Клиентское устройство 902 принимает трехмерную карту, сформированную посредством облака точек и т.п. из сервера 901, и оценивает собственное местоположение клиентского устройства 902 с использованием трехмерной карты, созданной на основе информации датчиков клиентского устройства 902. Клиентское устройство 902 передает полученную информацию датчиков на сервер 901.
[0315] Клиентское устройство 902 включает в себя приемное устройство 1011 данных, модуль 1012 связи, контроллер 1013 приема, преобразователь 1014 форматов, датчики 1015, модуль 1016 создания трехмерных данных, процессор 1017 трехмерных изображений, устройство 1018 хранения трехмерных данных, преобразователь 1019 форматов, модуль 1020 связи, контроллер 1021 передачи и передающее устройство 1022 данных.
[0316] Приемное устройство 1011 данных принимает трехмерную карту 1031 из сервера 901. Трехмерная карта 1031 представляет собой данные, которые включают в себя облако точек, такие как WLD или SWLD. Трехмерная карта 1031 может включать в себя сжатые данные или несжатые данные.
[0317] Модуль 1012 связи обменивается данными с сервером 901 и передает запрос на передачу данных (например, запрос на передачу на предмет трехмерной карты) на сервер 901.
[0318] Контроллер 1013 приема обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1012 связи, чтобы устанавливать связь с партнером по связи.
[0319] Преобразователь 1014 форматов выполняет преобразование формата и т.п. для трехмерной карты 1031, принимаемой посредством приемного устройства 1011 данных, чтобы формировать трехмерную карту 1032. Преобразователь 1014 форматов также выполняет процесс распаковки или декодирования, когда трехмерная карта 1031 сжимается или кодируется. Следует отметить, что преобразователь 1014 форматов не выполняет процесс распаковки или декодирования, когда трехмерная карта 1031 представляет собой несжатые данные.
[0320] Датчики 815 представляют собой группу датчиков, таких как лидары, камеры для съемки в диапазоне видимого света, камеры для съемки в инфракрасном диапазоне или датчики глубины, которые получают информацию относительно местоположения за пределами транспортного средства, оснащенного клиентским устройством 902, и формируют информацию 1033 датчиков. Информация 1033 датчиков, например, представляет собой трехмерные данные, такие как облако точек (данные точечных групп), когда датчики 1015 представляют собой лазерные датчики, такие как лидары. Следует отметить, что один датчик может служить в качестве датчиков 1015.
[0321] Модуль 1016 создания трехмерных данных формирует трехмерные данные 1034 окружающей зоны рассматриваемого транспортного средства на основе информации 1033 датчиков. Например, модуль 1016 создания трехмерных данных формирует данные облаков точек с цветовой информацией относительно окружающей зоны рассматриваемого транспортного средства с использованием информации, полученной посредством лидара, и видео в диапазоне видимого света, полученного посредством камеры для съемки в диапазоне видимого света.
[0322] Процессор 1017 трехмерных изображений выполняет процесс оценки собственного местоположения и т.п. рассматриваемого транспортного средства, с использованием (i) принимаемой трехмерной карты 1032, такой как облако точек, и (ii) трехмерных данных 1034 окружающей зоны рассматриваемого транспортного средства, сформированных с использованием информации 1033 датчиков. Следует отметить, что процессор 1017 трехмерных изображений может формировать трехмерные данные 1035 относительно окрестности рассматриваемого транспортного средства посредством объединения трехмерной карты 1032 и трехмерных данных 1034 и может выполнять процесс оценки собственного местоположения с использованием созданных трехмерных данных 1035.
[0323] Устройство 1018 хранения трехмерных данных сохраняет трехмерную карту 1032, трехмерные данные 1034, трехмерные данные 1035 и т.п.
[0324] Преобразователь 1019 форматов формирует информацию 1037 датчиков посредством преобразования информации 1033 датчиков в формат, поддерживаемый на конце приемного устройства. Следует отметить, что преобразователь 1019 форматов может сокращать объем данных посредством сжатия или кодирования информации 1037 датчиков. Преобразователь 1019 форматов может опускать этот процесс, когда преобразование формата не требуется. Преобразователь 1019 форматов также может управлять объемом данных, которые должны передаваться в соответствии с указанным диапазоном передачи.
[0325] Модуль 1020 связи обменивается данными с сервером 901 и принимает запрос на передачу данных (запрос на передачу на предмет информации датчиков) и т.п. из сервера 901.
[0326] Контроллер 1021 передачи обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1020 связи, чтобы устанавливать связь с партнером по связи.
[0327] Передающее устройство 1022 данных передает информацию 1037 датчиков на сервер 901. Информация 1037 датчиков включает в себя, например, информацию, полученную через датчики 1015, такую как информация, полученная посредством лидара, изображение яркости, полученное посредством камеры для съемки в диапазоне видимого света, инфракрасное изображение, полученное посредством камеры для съемки в инфракрасном диапазоне, изображение глубины, полученное посредством датчика глубины, информация позиций датчиков и информация скорости датчиков.
[0328] Далее описывается структура сервера 901. Фиг. 30 является блок-схемой, показывающей примерную структуру сервера 901. Сервер 901 передает информацию датчиков из клиентского устройства 902 и создает трехмерные данные на основе принимаемой информации датчиков. Сервер 901 обновляет трехмерную карту, управляемую посредством сервера 901, с использованием созданных трехмерных данных. Сервер 901 передает обновленную трехмерную карту в клиентское устройство 902 в ответ на запрос на передачу на предмет трехмерной карты из клиентского устройства 902.
[0329] Сервер 901 включает в себя приемное устройство 1111 данных, модуль 1112 связи, контроллер 1113 приема, преобразователь 1114 форматов, модуль 1116 создания трехмерных данных, модуль 1117 объединения трехмерных данных, устройство 1118 хранения трехмерных данных, преобразователь 1119 форматов, модуль 1120 связи, контроллер 1121 передачи и передающее устройство 1122 данных.
[0330] Приемное устройство данных 1111 принимает информацию 1037 датчиков из клиентского устройства 902. Информация 1037 датчиков включает в себя, например, информацию, полученную посредством лидара, изображение яркости, полученное посредством камеры для съемки в диапазоне видимого света, инфракрасное изображение, полученное посредством камеры для съемки в инфракрасном диапазоне, изображение глубины, полученное посредством датчика глубины, информацию позиций датчиков, информацию скорости датчиков и т.п.
[0331] Модуль 1112 связи обменивается данными с клиентским устройством 902 и передает запрос на передачу данных (например, запрос на передачу на предмет информации датчиков) и т.п. в клиентское устройство 902.
[0332] Контроллер 1113 приема обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1112 связи, чтобы устанавливать связь с партнером по связи.
[0333] Преобразователь 1114 форматов формирует информацию 1132 датчиков посредством выполнения процесса распаковки или декодирования, когда принимаемая информация 1037 датчиков сжимается или кодируется. Следует отметить, что преобразователь 1114 форматов не выполняет процесс распаковки или декодирования, когда информация 1037 датчиков представляет собой несжатые данные.
[0334] Модуль 1116 создания трехмерных данных формирует трехмерные данные 1134 окружающей зоны клиентского устройства 902 на основе информации 1132 датчиков. Например, модуль 1116 создания трехмерных данных формирует данные облаков точек с цветовой информацией относительно окружающей зоны клиентского устройства 902 с использованием информации, полученной посредством лидара, и видео в диапазоне видимого света, полученного посредством камеры для съемки в диапазоне видимого света.
[0335] Модуль 1117 объединения трехмерных данных обновляет трехмерную карту 1135 посредством объединения трехмерных данных 1134, созданных на основе информации 1132 датчиков, с трехмерной картой 1135, управляемой посредством сервера 901.
[0336] Устройство 1118 хранения трехмерных данных сохраняет трехмерную карту 1135 и т.п.
[0337] Преобразователь 1119 форматов формирует трехмерную карту 1031 посредством преобразования трехмерной карты 1135 в формат, поддерживаемый на конце приемного устройства. Следует отметить, что преобразователь 1119 форматов может сокращать объем данных посредством сжатия или кодирования трехмерной карты 1135. Преобразователь 1119 форматов может опускать этот процесс, когда преобразование формата не требуется. Преобразователь 1119 форматов также может управлять объемом данных, которые должны передаваться в соответствии с указанным диапазоном передачи.
[0338] Модуль 1120 связи обменивается данными с клиентским устройством 902 и принимает запрос на передачу данных (запрос на передачу на предмет трехмерной карты) и т.п. из клиентского устройства 902.
[0339] Контроллер 1121 передачи обменивается информацией, такой как информация относительно поддерживаемых форматов, с партнером по связи через модуль 1120 связи, чтобы устанавливать связь с партнером по связи.
[0340] Передающее устройство 1122 данных передает трехмерную карту 1031 в клиентское устройство 902. Трехмерная карта 1031 представляет собой данные, которые включают в себя облако точек, такие как WLD или SWLD. Трехмерная карта 1031 может включать одно из сжатых данных и несжатых данных.
[0341] Далее описывается последовательность операций клиентского устройства 902. Фиг. 31 является блок-схемой последовательности операций способа для операции, когда клиентское устройство 902 получает трехмерную карту.
[0342] Клиентское устройство 902 сначала запрашивает сервер 901 на предмет того, чтобы передавать трехмерную карту (облако точек и т.д.) (S1001). В этот момент, посредством передачи также информации позиции относительно клиентского устройства 902, полученной через GPS и т.п., клиентское устройство 902 также может запрашивать сервер 901 на предмет того, чтобы передавать трехмерную карту, связанную с этой информацией позиции.
[0343] Клиентское устройство 902 затем принимает трехмерную карту из сервера 901 (S1002). Когда принимаемая трехмерная карта представляет собой сжатые данные, клиентское устройство 902 декодирует принимаемую трехмерную карту и формирует несжатую трехмерную карту (S1003).
[0344] Клиентское устройство 902 затем создает трехмерные данные 1034 окружающей зоны клиентского устройства 902 с использованием информации 1033 датчиков, полученной посредством датчиков 1015 (S1004). Клиентское устройство 902 затем оценивает собственное местоположение клиентского устройства 902 с использованием трехмерной карты 1032, принимаемой из сервера 901, и трехмерных данных 1034, созданных с использованием информации 1033 датчиков (S1005).
[0345] Фиг. 32 является блок-схемой последовательности операций способа для операции, когда клиентское устройство 902 передает информацию датчиков. Клиентское устройство 902 сначала принимает запрос на передачу на предмет информации датчиков из сервера 901 (S1011). Клиентское устройство 902, которое принимает запрос на передачу, передает информацию 1037 датчиков на сервер 901 (S1012). Следует отметить, что клиентское устройство 902 может формировать информацию 1037 датчиков посредством сжатия каждого фрагмента информации с использованием способа сжатия, подходящего для каждого фрагмента информации, когда информация 1033 датчиков включает в себя множество фрагментов информации, полученных посредством датчиков 1015.
[0346] Далее описывается последовательность операций сервера 901. Фиг. 33 является блок-схемой последовательности операций способа для операции, когда сервер 901 получает информацию датчиков. Сервер 901 сначала запрашивает клиентское устройство 902 на предмет того, чтобы передавать информацию датчиков (S1021). Сервер 901 затем принимает информацию 1037 датчиков, передаваемую из клиентского устройства 902 в соответствии с запросом (S1022). Сервер 901 затем создает трехмерные данные 1134 с использованием принимаемой информации 1037 датчиков (S1023). Сервер 901 затем отражает созданные трехмерные данные 1134 на трехмерной карте 1135 (S1024).
[0347] Фиг. 34 является блок-схемой последовательности операций способа для операции, когда сервер 901 передает трехмерную карту. Сервер 901 сначала принимает запрос на передачу на предмет трехмерной карты из клиентского устройства 902 (S1031). Сервер 901, который принимает запрос на передачу на предмет трехмерной карты, передает трехмерную карту в клиентское устройство 902 (S1032). В этот момент, сервер 901 может извлекать трехмерную карту окрестности клиентского устройства 902 наряду с информацией позиции относительно клиентского устройства 902 и передавать извлеченную трехмерную карту. Сервер 901 может сжимать трехмерную карту, сформированную посредством облака точек, с использованием, например, способа сжатия структуры в виде дерева октантов, и передавать сжатую трехмерную карту.
[0348] В дальнейшем в этом документе описываются варьирования настоящего варианта осуществления.
[0349] Сервер 901 создает трехмерные данные 1134 окрестности позиции клиентского устройства 902 с использованием информации 1037 датчиков, принимаемой из клиентского устройства 902. Сервер 901 затем вычисляет разность между трехмерными данными 1134 и трехмерной картой 1135 посредством сопоставления созданных трехмерных данных 1134 с трехмерной картой 1135 идентичной зоны, управляемой посредством сервера 901. Сервер 901 определяет то, что определенный тип аномалии возникает в окружающей зоне клиентского устройства 902, когда разность превышает или равна предварительно определенному пороговому значению. Например, есть возможность того, что большая разность возникает между трехмерной картой 1135, управляемой посредством сервера 901, и трехмерными данными 1134, созданными на основе информации 1037 датчиков, когда проседание грунта и т.п. возникает вследствие стихийного бедствия, такого как землетрясение.
[0350] Информация 1037 датчиков может включать в себя информацию, указывающую, по меньшей мере, одно из типа датчика, производительности датчика и номера модели датчика. К информации 1037 датчиков также может присоединяться идентификатор класса и т.п. в соответствии с производительностью датчика. Например, когда информация 1037 датчиков получается посредством лидара, есть возможность назначать идентификаторы для производительности датчика. Датчик, допускающий получение информации с точностью в единицах в несколько миллиметров, имеет класс 1, датчик, допускающий получение информации с точностью в единицах в несколько сантиметров, имеет класс 2, и датчик, допускающий получение информации с точностью в единицах в несколько метров, имеет класс 3. Сервер 901 может оценивать информацию производительности датчика и т.п. из номера модели клиентского устройства 902. Например, когда клиентское устройство 902 оснащается в транспортном средстве, сервер 901 может определять информацию спецификации датчика из типа транспортного средства. В этом случае, сервер 901 может получать информацию относительно типа транспортного средства заранее, и информация также может быть включена в информацию датчиков. Сервер 901 может изменять степень коррекции относительно трехмерных данных 1134, созданных с использованием информации 1037 датчиков, с использованием полученной информации 1037 датчиков. Например, когда производительность датчика является высокой по точности (класс 1), сервер 901 не корректирует трехмерные данные 1134. Когда производительность датчика является низкой по точности (класс 3), сервер 901 корректирует трехмерные данные 1134 в соответствии с точностью датчика. Например, сервер 901 увеличивает степень (интенсивность) коррекции со снижением точности датчика.
[0351] Сервер 901 может одновременно отправлять запрос на передачу на предмет информации датчиков во множество клиентских устройств 902 в определенном пространстве. Сервер 901 не должен использовать всю информацию датчиков для создания трехмерных данных 1134 и, например, может выбирать информацию датчиков, которая должна использоваться в соответствии с производительностью датчика, при приеме множества фрагментов информации датчиков из множества клиентских устройств 902. Например, при обновлении трехмерной карты 1135, сервер 901 может выбирать высокоточную информацию датчиков (класс 1) из числа принимаемого множества фрагментов информации датчиков и создавать трехмерные данные 1134 с использованием выбранной информации датчиков.
[0352] Сервер 901 не ограничен только тем, что он представляет собой сервер, такой как облачная система мониторинга трафика, и также может представлять собой другое (установленное в транспортном средстве) клиентское устройство. Фиг. 35 является схемой структуры системы в этом случае.
[0353] Например, клиентское устройство 902C отправляет запрос на передачу на предмет информации датчиков в клиентское устройство 902A, расположенное поблизости, и получает информацию датчиков из клиентского устройства 902A. Клиентское устройство 902C затем создает трехмерные данные с использованием полученной информации датчиков клиентского устройства 902A и обновляет трехмерную карту клиентского устройства 902C. Это обеспечивает возможность клиентскому устройству 902C формировать трехмерную карту пространства, которое может получаться из клиентского устройства 902A, и полностью использовать производительность клиентского устройства 902C. Например, такой случай возможен, когда клиентское устройство 902C имеет высокую производительность.
[0354] В этом случае, клиентскому устройству 902A, которое предоставляет информацию датчиков, дается право получать высокоточную трехмерную карту, сформированную посредством клиентского устройства 902C. Клиентское устройство 902A принимает высокоточную трехмерную карту из клиентского устройства 902C в соответствии с этими правами.
[0355] Сервер 901 может отправлять запрос на передачу на предмет информации датчиков во множество клиентских устройств 902 (в клиентское устройство 902A и клиентское устройство 902B), расположенных поблизости от клиентского устройства 902C. Когда датчик клиентского устройства 902A или клиентского устройства 902B имеет высокую производительность, клиентское устройство 902C допускает создание трехмерных данных с использованием информации датчиков, полученной посредством этого высокопроизводительного датчика.
[0356] Фиг. 36 является блок-схемой, показывающей структуру функциональности сервера 901 и клиентского устройства 902. Сервер 901 включает в себя, например, процессор 1201 сжатия/декодирования трехмерных карт, который сжимает и декодирует трехмерную карту, и процессор 1202 сжатия/декодирования информации датчиков, который сжимает и декодирует информацию датчиков.
[0357] Клиентское устройство 902 включает в себя процессор 1211 декодирования трехмерных карт и процессор 1212 сжатия информации датчиков. Процессор 1211 декодирования трехмерных карт принимает кодированные данные сжатой трехмерной карты, декодирует кодированные данные и получает трехмерную карту. Процессор 1212 сжатия информации датчиков сжимает саму информацию датчиков вместо трехмерных данных, созданных с использованием полученной информации датчиков, и передает кодированные данные сжатой информации датчиков на сервер 901. При такой структуре, клиентское устройство 902 не должно внутренне сохранять процессор, который выполняет процесс для сжатия трехмерных данных трехмерной карты (облака точек и т.д.), при условии, что клиентское устройство 902 внутренне сохраняет процессор, который выполняет процесс для декодирования трехмерной карты (облака точек и т.д.). Это позволяет ограничивать затраты, потребление мощности и т.п. клиентского устройства 902.
[0358] Как указано выше, клиентское устройство 902 согласно настоящему варианту осуществления оснащается в мобильном объекте и создает трехмерные данные 1034 окружающей зоны мобильного объекта с использованием информации 1033 датчиков, которая получается через датчик 1015, оснащенный в мобильном объекте, и указывает окружающее условие мобильного объекта. Клиентское устройство 902 оценивает собственное местоположение мобильного объекта с использованием созданных трехмерных данных 1034. Клиентское устройство 902 передает полученную информацию 1033 датчиков на сервер 901 или другой мобильный объект.
[0359] Это обеспечивает возможность клиентскому устройству 902 передавать информацию 1033 датчиков на сервер 901 и т.п. Это позволяет дополнительно уменьшать объем передаваемых данных по сравнению с моментом передачи трехмерных данных. Поскольку для клиентского устройства 902 нет необходимости выполнять такие процессы, как сжатие или кодирование трехмерных данных, можно уменьшать объем обработки клиентского устройства 902. В связи с этим, клиентское устройство 902 допускает уменьшение объема данных, которые должны передаваться, или упрощение структуры устройства.
[0360] Клиентское устройство 902 дополнительно передает запрос на передачу на предмет трехмерной карты на сервер 901 и принимает трехмерную карту 1031 из сервера 901. При оценке собственного местоположения, клиентское устройство 902 оценивает собственное местоположение с использованием трехмерных данных 1034 и трехмерной карты 1032.
[0361] Информация 1034 датчиков включает в себя, по меньшей мере, одно из информации, полученной посредством лазерного датчика, изображения яркости, инфракрасного изображения, изображения глубины, информации позиций датчиков или информации скорости датчиков.
[0362] Информация 1033 датчиков включает в себя информацию, которая указывает производительность датчика.
[0363] Клиентское устройство 902 кодирует или сжимает информацию 1033 датчиков и, при передаче информации датчиков, передает информацию 1037 датчиков, которая кодирована или сжата, на сервер 901 или в другой мобильный объект 902. Это обеспечивает возможность клиентскому устройству 902 уменьшать объем данных, которые должны передаваться.
[0364] Например, клиентское устройство 902 включает в себя процессор и запоминающее устройство. Процессор выполняет вышеуказанные процессы с использованием запоминающего устройства.
[0365] Сервер 901 согласно настоящему варианту осуществления допускает обмен данными с клиентским устройством 902, оснащенным в мобильном объекте, и принимает информацию 1037 датчиков, которая получается через датчик 1015, оснащенный в мобильном объекте, и указывает окружающее условие мобильного объекта. Сервер 901 создает трехмерные данные 1134 окружающей зоны мобильного объекта с использованием принимаемой информации 1037 датчиков.
[0366] Вследствие этого, сервер 901 создает трехмерные данные 1134 с использованием информации 1037 датчиков, передаваемой из клиентского устройства 902. Это позволяет дополнительно уменьшать объем передаваемых данных по сравнению с моментом, когда клиентское устройство 902 передает трехмерные данные. Поскольку для клиентского устройства 902 нет необходимости выполнять такие процессы, как сжатие или кодирование трехмерных данных, можно уменьшать объем обработки клиентского устройства 902. В связи с этим, сервер 901 допускает уменьшение объема данных, которые должны передаваться, или упрощение структуры устройства.
[0367] Сервер 901 дополнительно передает запрос на передачу на предмет информации датчиков в клиентское устройство 902.
[0368] Сервер 901 дополнительно обновляет трехмерную карту 1135 с использованием созданных трехмерных данных 1134 и передает трехмерную карту 1135 в клиентское устройство 902 в ответ на запрос на передачу на предмет трехмерной карты 1135 из клиентского устройства 902.
[0369] Информация 1037 датчиков включает в себя, по меньшей мере, одно из информации, полученной посредством лазерного датчика, изображения яркости, инфракрасного изображения, изображения глубины, информации позиций датчиков или информации скорости датчиков.
[0370] Информация 1037 датчиков включает в себя информацию, которая указывает производительность датчика.
[0371] Сервер 901 дополнительно корректирует трехмерные данные в соответствии с производительностью датчика. Это обеспечивает возможность способу создания трехмерных данных повышать качество трехмерных данных.
[0372] При приеме информации датчиков, сервер 901 принимает множество фрагментов информации 1037 датчиков, принимаемой из множества клиентских устройств 902, и выбирает информацию 1037 датчиков, которая должна использоваться при создании трехмерных данных 1134, на основе множества фрагментов информации, каждый из которых указывает производительность датчика, включенного во множество фрагментов информации 1037 датчиков. Это обеспечивает возможность серверу 901 повышать качество трехмерных данных 1134.
[0373] Сервер 901 декодирует или распаковывает принимаемую информацию 1037 датчиков и создает трехмерные данные 1134 с использованием информации 1132 датчиков, которая декодирована или распакована. Это обеспечивает возможность серверу 901 уменьшать объем данных, которые должны передаваться.
[0374] Например, сервер 901 включает в себя процессор и запоминающее устройство. Процессор выполняет вышеуказанные процессы с использованием запоминающего устройства.
[0375] Вариант 7 осуществления
В настоящем варианте осуществления, в дальнейшем описываются способы кодирования и декодирования трехмерных данных с использованием процесса взаимного прогнозирования.
[0376] Фиг. 37 является блок-схемой устройства 1300 кодирования трехмерных данных согласно настоящему варианту осуществления. Это устройство 1300 кодирования трехмерных данных формирует кодированный поток битов (в дальнейшем в этом документе, также называемый просто "потоком битов"), который представляет собой кодированный сигнал, посредством кодирования трехмерных данных. Как проиллюстрировано на фиг. 37, устройство 1300 кодирования трехмерных данных включает в себя модуль 1301 разделения, вычитатель 1302, преобразователь 1303, квантователь 1304, обратный квантователь 1305, обратный преобразователь 1306, сумматор 1307, запоминающее устройство 1308 опорных объемов, модуль 1309 внутреннего прогнозирования, запоминающее устройство 1310 опорных пространств, модуль 1311 взаимного прогнозирования, контроллер 1312 прогнозирования и энтропийный кодер 1313.
[0377] Модуль 1301 разделения разделяет множество объемов (VLM), которые представляют собой единицы кодирования каждого пространства (SPC), включенного в трехмерные данные. Модуль 1301 разделения задает представление в виде дерева октантов (задание как дерева октантов) вокселов в каждом объеме. Следует отметить, что модуль 1301 разделения может задавать пространства как представление в виде дерева октантов с пространствами, имеющими размер, идентичный размеру объемов. Модуль 1301 разделения также может присоединять информацию (информацию глубины и т.д.), необходимую для того, чтобы задавать представление в виде дерева октантов, к заголовку и т.п. потока битов.
[0378] Вычитатель 1302 вычисляет разность между объемом (целевым объемом кодирования), выведенным посредством модуля 1301 разделения, и прогнозированным объемом, сформированным через внутреннее прогнозирование или взаимное прогнозирование, которое описывается ниже, и выводит вычисленную разность в преобразователь 1303 в качестве остатка прогнозирования. Фиг. 38 является схемой, показывающей примерное вычисление остатка прогнозирования. Следует отметить, что битовые последовательности целевого объема кодирования и прогнозированного объема, показанных здесь, например, представляют собой информацию позиции, указывающую позиции трехмерных точек, включенных в объемы.
[0379] В дальнейшем в этом документе описывается порядок сканирования представления в виде дерева октантов и вокселов. Объем кодируется после преобразования в структуру в виде дерева октантов (задания как дерева октантов). Структура в виде дерева октантов включает в себя узлы и листья. Каждый узел имеет восемь узлов или листьев, и каждый лист имеет вокселную (VXL) информацию. Фиг. 39 является схемой, показывающей примерную структуру объема, включающего в себя вокселы. Фиг. 40 является схемой, показывающей пример объема, показанного на фиг. 39, преобразованного в структуру в виде дерева октантов. Из числа листьев, показанных на фиг. 40, листья 1, 2 и 3, соответственно, представляют VXL 1, VXL 2 и VXL 3 и представляют VXL, включающие в себя точечную группу (в дальнейшем в этом документе, активные VXL).
[0380] Дерево октантов представляется, например, посредством двоичных последовательностей единиц и нулей. Например, при использовании для узлов или активных VXL значения 1, а для всех остальных значения в 0, каждому узлу и листу назначается двоичная последовательность, показанная на фиг. 40. Таким образом, эта двоичная последовательность сканируется в соответствии с порядком сканирования в ширину или в глубину. Например, при сканировании в ширину, получается двоичная последовательность, показанная в A по фиг. 41. При сканировании в глубину, получается двоичная последовательность, показанная в B по фиг. 41. Двоичные последовательности, полученные посредством этого сканирования, кодируются посредством энтропийного кодирования, которое уменьшает объем информации.
[0381] Далее описывается информация глубины в представлении в виде дерева октантов. Глубина в представлении в виде дерева октантов используется для того, чтобы управлять тем, с насколько большой степенью детализации сохраняется информация облаков точек, включенная в объем. После задания большой глубины, можно воспроизводить информацию облаков точек до более точного уровня, но объем данных для представления узлов и листьев увеличивается. Тем не менее, после задания небольшой глубины, объем данных снижается, но некоторая информация, такая как информация облаков точек, первоначально хранимая, теряется, поскольку фрагменты информации облаков точек, включающие в себя различные позиции и различные цвета, теперь рассматриваются в качестве фрагментов информации облаков точек, включающих в себя идентичную позицию и идентичный цвет.
[0382] Например, фиг. 42 является схемой, показывающей пример, в котором дерево октантов с глубиной в 2, показанное на фиг. 40, представляется с глубиной в 1. Дерево октантов, показанное на фиг. 42, имеет более низкий объем данных, чем дерево октантов, показанное на фиг. 40. Другими словами, преобразованное в двоичную форму дерево октантов, показанное на фиг. 42, имеет меньшее число битов, чем дерево октантов, показанное на фиг. 40. Лист 1 и лист 2, показанные на фиг. 40, представляются посредством листа 1, показанного на фиг. 41. Другими словами, информация относительно листа 1 и листа 2, находящегося в различных позициях, теряется.
[0383] Фиг. 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 кодирования трехмерных данных может управлять уменьшением объема данных посредством изменения глубины дерева октантов.
[0384] Устройство 1300 кодирования трехмерных данных может задавать информацию глубины дерева октантов в единицах миров, единицах пространств или единицах объемов. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять информацию глубины к информации заголовка мира, информации заголовка пространства или информации заголовка объема. Во всех мирах, пространствах и объемах, ассоциированных с различными временами, идентичное значение может использоваться в качестве информации глубины. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять информацию глубины к информации заголовка, управляющей мирами, ассоциированными со всеми временами.
[0385] Когда цветовая информация включается в вокселы, преобразователь 1303 применяет преобразование частоты, например, ортогональное преобразование, к остатку прогнозирования цветовой информации вокселов в объеме. Например, преобразователь 1303 создает одномерный массив посредством сканирования остатка прогнозирования в определенном порядке сканирования. Затем, преобразователь 1303 преобразует одномерный массив в частотную область посредством применения одномерного ортогонального преобразования к созданному одномерному массиву. Вследствие этого, когда значение остатка прогнозирования в объеме является аналогичным, значение низкочастотного компонента увеличивается, и значение высокочастотного компонента снижается. В связи с этим, можно более эффективно уменьшать объем кодирования в квантователе 1304.
[0386] Преобразователь 1303 не должен обязательно использовать ортогональное преобразование в одной размерности, но также может использовать ортогональное преобразование в двух или более размерностей. Например, преобразователь 1303 преобразует остаток прогнозирования в двумерный массив в определенном порядке сканирования и применяет двумерное ортогональное преобразование к полученному двумерному массиву. Преобразователь 1303 может выбирать способ ортогонального преобразования, который должен использоваться, из множества способов ортогонального преобразования. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, информацию, указывающую то, какой способ ортогонального преобразования используется. Преобразователь 1303 может выбирать способ ортогонального преобразования, который должен использоваться, из множества способов ортогонального преобразования в различных размерностях. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, то, в скольких размерностях используется способ ортогонального преобразования.
[0387] Например, преобразователь 1303 сопоставляет порядок сканирования остатка прогнозирования с порядком сканирования (в ширину, в глубину и т.п.) в дереве октантов в объеме. Это позволяет уменьшать объем служебной информации, поскольку информация, указывающая порядок сканирования остатка прогнозирования, не должна обязательно присоединяться к потоку битов. Преобразователь 1303 может применять порядок сканирования, отличающийся от порядка сканирования дерева октантов. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, информацию, указывающую порядок сканирования остатка прогнозирования. Это обеспечивает возможность устройству 1300 кодирования трехмерных данных эффективно кодировать остаток прогнозирования. Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, информацию (флаг и т.д.), указывающую то, следует или нет применять порядок сканирования дерева октантов, а также может присоединять, к потоку битов, информацию, указывающую порядок сканирования остатка прогнозирования, когда порядок сканирования дерева октантов не применяется.
[0388] Преобразователь 1303 не только преобразует остаток прогнозирования цветовой информации, а также может преобразовывать другую информацию атрибутов, включенную в вокселы. Например, преобразователь 1303 может преобразовывать и кодировать информацию, такую как информация коэффициента отражения, полученная при получении облака точек через лидар, и т.п.
[0389] Преобразователь 1303 может пропускать эти процессы, когда пространства не включают в себя информацию атрибутов, такую как цветовая информация. Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, информацию (флаг), указывающую то, следует или нет пропускать процессы преобразователя 1303.
[0390] Квантователь 1304 формирует квантованный коэффициент посредством выполнения квантования с использованием управляющего параметра квантования для частотного компонента остатка прогнозирования, сформированного посредством преобразователя 1303. Вследствие этого, объем информации дополнительно уменьшается. Сформированный квантованный коэффициент выводится в энтропийный кодер 1313. Квантователь 1304 может управлять управляющим параметром квантования в единицах миров, единицах пространств или единицах объемов. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет управляющий параметр квантования к каждой информации заголовка и т.п. Квантователь 1304 может выполнять управление квантованием посредством изменения весового коэффициента в расчете на частотный компонент остатка прогнозирования. Например, квантователь 1304 может точно квантовать низкочастотный компонент и примерно квантовать высокочастотный компонент. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к заголовку, параметр, выражающий весовой коэффициент каждого частотного компонента.
[0391] Квантователь 1304 может пропускать эти процессы, когда пространства не включают в себя информацию атрибутов, такую как цветовая информация. Устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, информацию (флаг), указывающую то, следует или нет пропускать процессы квантователя 1304.
[0392] Обратный квантователь 1305 формирует обратно квантованный коэффициент остатка прогнозирования посредством выполнения обратного квантования для квантованного коэффициента, сформированного посредством квантователя 1304 с использованием управляющего параметра квантования, и выводит сформированный обратно квантованный коэффициент в обратный преобразователь 1306.
[0393] Обратный преобразователь 1306 формирует остаток прогнозирования после применения обратного преобразования посредством применения обратного преобразования для обратно квантованного коэффициента, сформированного посредством обратного квантователя 1305. Этот остаток прогнозирования после применения обратного преобразования не должен обязательно полностью совпадать с остатком прогнозирования, выведенным посредством преобразователя 1303, поскольку остаток прогнозирования после применения обратного преобразования представляет собой остаток прогнозирования, который формируется после квантования.
[0394] Сумматор 1307 суммирует, чтобы формировать восстановленный объем (i), остаток прогнозирования после применения обратного преобразования, сформированный посредством обратного преобразователя 1306, с (ii) прогнозированным объемом, который формируется через внутреннее прогнозирование или внутреннее прогнозирование, которое описывается ниже и используется для того, чтобы формировать предварительный квантованный остаток прогнозирования. Этот восстановленный объем сохраняется в запоминающем устройстве 1308 опорных объемов или запоминающем устройстве 1310 опорных пространств.
[0395] Модуль 1309 внутреннего прогнозирования формирует прогнозированный объем целевого объема кодирования с использованием информации атрибутов соседнего объема, сохраненной в запоминающем устройстве 1308 опорных объемов. Информация атрибутов включает в себя цветовую информацию или коэффициент отражения вокселов. Модуль 1309 внутреннего прогнозирования формирует прогнозированное значение цветовой информации или коэффициент отражения целевого объема кодирования.
[0396] Фиг. 44 является схемой для описания операции модуля 1309 внутреннего прогнозирования. Например, модуль 1309 внутреннего прогнозирования формирует прогнозированный объем целевого объема кодирования (idx объема=3), показанный на фиг. 44, с использованием соседнего объема (idx объема=0). Idx объема здесь представляет собой информацию идентификатора, которая присоединяется к объему в пространстве, и различное значение назначается каждому объему. Порядок назначения idx объема может быть идентичным порядку кодирования, а также может отличаться от порядка кодирования. Например, модуль 1309 внутреннего прогнозирования использует среднее значение цветовой информации вокселов, включенных в idx объема=0, который представляет собой соседний объем, в качестве прогнозированного значения цветовой информации целевого объема кодирования, показанного на фиг. 44. В этом случае, остаток прогнозирования формируется посредством вычитания прогнозированного значения цветовой информации из цветовой информации каждого воксела, включенного в целевой объем кодирования. Следующие процессы выполняются посредством преобразователя 1303 и последующих процессоров относительно этого остатка прогнозирования. В этом случае, устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, информацию соседних объемов и информацию режима прогнозирования. Информация соседних объемов здесь представляет собой информацию, указывающую соседний объем, используемый при прогнозировании, и указывает, например, idx объема для соседнего объема, используемого при прогнозировании. Информация режима прогнозирования здесь указывает режим, используемый для того, чтобы формировать прогнозированный объем. Режим, например, представляет собой режим средних значений, в котором прогнозированное значение формируется с использованием среднего значения вокселов в соседнем объеме, или режим медиан, в котором прогнозированное значение формируется с использованием медианы вокселов в соседнем объеме.
[0397] Модуль 1309 внутреннего прогнозирования может формировать прогнозированный объем с использованием множества соседних объемов. Например, в структуре, показанной на фиг. 44, модуль 1309 внутреннего прогнозирования формирует прогнозированный объем 0 с использованием объема с idx объема=0 и формирует прогнозированный объем 1 с использованием объема с idx объема=1. Модуль 1309 внутреннего прогнозирования затем формирует среднее прогнозированного объема 0 и прогнозированного объема 1 в качестве конечного прогнозированного объема. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, множество idx объемов для множества объемов, используемых для того, чтобы формировать прогнозированный объем.
[0398] Фиг. 45 является схемой, принципиально показывающей процесс взаимного прогнозирования согласно настоящему варианту осуществления. Модуль 1311 взаимного прогнозирования кодирует (взаимно прогнозирует) пространство (SPC), ассоциированное с определенным временем T_Cur, с использованием кодированного пространства, ассоциированного с другим временем T_LX. В этом случае, модуль 1311 взаимного прогнозирования выполняет процесс кодирования посредством применения процесса вращения и перемещения в пространстве к кодированному пространству, ассоциированному с другим временем T_LX.
[0399] Устройство 1300 кодирования трехмерных данных присоединяет, к потоку битов, RT-информацию, связанную с процессом вращения и перемещения в пространстве, подходящим для пространства, ассоциированного с другим временем T_LX. Другое время T_LX, например, представляет собой время T_L0 перед определенным временем T_Cur. В этот момент, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, RT-информацию RT_L0, связанную с процессом вращения и перемещения в пространстве, подходящим для пространства, ассоциированного со временем T_L0.
[0400] Альтернативно, другое время T_LX, например, представляет собой время T_L1 после определенного времени T_Cur. В этот момент, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, RT-информацию RT_L1, связанную с процессом вращения и перемещения в пространстве, подходящим для пространства, ассоциированного со временем T_L1.
[0401] Альтернативно, модуль 1311 взаимного прогнозирования кодирует (двунаправленное прогнозирование) со ссылкой на пространства, ассоциированные со временем T_L0 и временем T_L1, которые отличаются друг от друга. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к потоку битов, как RT-информацию RT_L0, так и RT-информацию RT_L1, связанную с процессом вращения и перемещения в пространстве, подходящим для своих пространств.
[0402] Следует отметить, что T_L0 описывается как находящееся до T_Cur, а T_L1 как находящееся до после T_Cur, но не обязательно ограничивается этим. Например, оба из T_L0 и T_L1 могут находиться до T_Cur. Также оба из T_L0 и T_L1 могут находиться после T_Cur.
[0403] Устройство 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-информации к заголовку и т.п. потока битов.
[0404] Устройство 1300 кодирования трехмерных данных определяет то, следует или нет применять вращение и перемещение в пространстве в расчете на опорное пространство, при кодировании со ссылкой на опорные пространства, ассоциированные с различными временами. В этом случае, устройство 1300 кодирования трехмерных данных может присоединять, к информации заголовка и т.п. потока битов, информацию (RT-флаг и т.д.), указывающую то, применяется или нет вращение и перемещение в пространстве в расчете на опорное пространство. Например, устройство 1300 кодирования трехмерных данных вычисляет RT-информацию и значение ошибки итеративного алгоритма ближайших точек (ICP), с использованием ICP-алгоритма в расчете на опорное пространство, на которое следует ссылаться из целевого пространства кодирования. Устройство 1300 кодирования трехмерных данных определяет то, что вращение и перемещение в пространстве не должно обязательно выполняться, и деактивирует RT-флаг, когда значение ICP-ошибки ниже или равно предварительно определенному фиксированному значению. Напротив, устройство 1300 кодирования трехмерных данных активирует RT-флаг и присоединяет RT-информацию к потоку битов, когда значение ICP-ошибки превышает вышеуказанное фиксированное значение.
[0405] Фиг. 46 является схемой, показывающей примерный синтаксис, который должен присоединяться к заголовку RT-информации и RT-флагу. Следует отметить, что число битов, назначенное каждому синтаксису, может определяться на основе диапазона этого синтаксиса. Например, когда восемь опорных пространств включаются в опорный список L0, 3 бита могут назначаться MaxRefSpc_l0. Число битов, которое должно назначаться, может быть переменным в соответствии со значением, которое может принимать каждый синтаксис, а также может быть фиксированным независимо от значения, которое может принимать каждый синтаксис. Когда число битов, которое должно назначаться, является фиксированным, устройство 1300 кодирования трехмерных данных может присоединять это фиксированное число битов к другой информации заголовка.
[0406] MaxRefSpc_l0, показанный на фиг. 46, указывает число опорных пространств, включенных в опорный список L0. RT_flag_l0[i] представляет собой RT-флаг опорного пространства i в опорном списке L0. Когда RT_flag_l0[i] равен 1, вращение и перемещение в пространстве применяются к опорному пространству i. Когда RT_flag_l0[i] равен 0, вращение и перемещение в пространстве не применяются к опорному пространству i.
[0407] R_l0[i] и T_l0[i] представляют собой RT-информацию опорного пространства i в опорном списке L0. R_l0[i] представляет собой информацию вращения опорного пространства i в опорном списке L0. Информация вращения указывает контент применяемого процесса вращения и, например, представляет собой матрицу вращения или кватернион. T_l0[i] представляет собой информацию перемещения в пространстве опорного пространства i в опорном списке L0. Информация перемещения в пространстве указывает контент применяемого процесса перемещения в пространстве и, например, представляет собой вектор перемещения в пространстве.
[0408] MaxRefSpc_l1 указывает число опорных пространств, включенных в опорный список L1. RT_flag_l1[i] представляет собой RT-флаг опорного пространства i в опорном списке L1. Когда RT_flag_l1[i] равен 1, вращение и перемещение в пространстве применяются к опорному пространству i. Когда RT_flag_l1[i] равен 0, вращение и перемещение в пространстве не применяются к опорному пространству i.
[0409] R_l1[i] и T_l1[i] представляют собой RT-информацию опорного пространства i в опорном списке L1. R_l1[i] представляет собой информацию вращения опорного пространства i в опорном списке L1. Информация вращения указывает контент применяемого процесса вращения и, например, представляет собой матрицу вращения или кватернион. T_l1[i] представляет собой информацию перемещения в пространстве опорного пространства i в опорном списке L1. Информация перемещения в пространстве указывает контент применяемого процесса перемещения в пространстве и, например, представляет собой вектор перемещения в пространстве.
[0410] Модуль 1311 взаимного прогнозирования формирует прогнозированный объем целевого объема кодирования с использованием информации относительно кодированного опорного пространства, сохраненной в запоминающем устройстве 1310 опорных пространств. Как указано выше, до формирования прогнозированного объема для целевого объема кодирования, модуль 1311 взаимного прогнозирования вычисляет RT-информацию в целевом пространстве кодирования и опорном пространстве с использованием ICP-алгоритма, чтобы приближаться к полной позиционной взаимосвязи между целевым пространством кодирования и опорным пространством. Модуль 1311 взаимного прогнозирования затем получает опорное пространство B посредством применения процесса вращения и перемещения в пространстве к опорному пространству с использованием вычисленной RT-информации. Затем, модуль 1311 взаимного прогнозирования формирует прогнозированный объем целевого объема кодирования в целевом пространстве кодирования с использованием информации в опорном пространстве B. Устройство 1300 кодирования трехмерных данных присоединяет, к информации заголовка и т.п. целевого пространства кодирования, RT-информацию, используемую для того, чтобы получать опорное пространство B.
[0411] Таким образом, модуль 1311 взаимного прогнозирования допускает повышение точности прогнозированного объема посредством формирования прогнозированного объема с использованием информации опорного пространства, после приближения к полной позиционной взаимосвязи между целевым пространством кодирования и опорным пространством, посредством применения процесса вращения и перемещения в пространстве к опорному пространству. Можно уменьшать объем кодирования, поскольку можно ограничивать остаток прогнозирования. Следует отметить, что описан пример, в котором ICP выполняется с использованием целевого пространства кодирования и опорного пространства, но не обязательно ограничивается этим. Например, модуль 1311 взаимного прогнозирования может вычислять RT-информацию посредством выполнения ICP с использованием, по меньшей мере, одного из (i) целевого пространства кодирования, в котором число вокселов или облаков точек отсекается, или (ii) опорного пространства, в котором число вокселов или облаков точек отсекается, чтобы уменьшать объем обработки.
[0412] Когда значение ICP-ошибки, полученное в качестве результата ICP, меньше предварительно определенного первого порогового значения, т.е. когда, например, позиционная взаимосвязь между целевым пространством кодирования и опорным пространством является аналогичной, модуль 1311 взаимного прогнозирования определяет то, что процесс вращения и перемещения в пространстве не требуется, и процесс вращения и перемещения в пространстве не должен обязательно выполняться. В этом случае, устройство 1300 кодирования трехмерных данных может управлять объемом служебной информации без присоединения RT-информации к потоку битов.
[0413] Когда значение ICP-ошибки превышает предварительно определенное второе пороговое значение, модуль 1311 взаимного прогнозирования определяет то, что изменение формы между пространствами является большим, и внутреннее прогнозирование может применяться ко всем объемам целевого пространства кодирования. В дальнейшем в этом документе, пространства, к которым применяется внутреннее прогнозирование, называются "внутренними пространствами". Второе пороговое значение превышает вышеуказанное первое пороговое значение. Настоящий вариант осуществления не ограничен ICP, и любой тип способа может использоваться при условии, что способ вычисляет RT-информацию с использованием двух вокселных наборов или двух наборов облаков точек.
[0414] Когда информация атрибутов, например, информация формы или цветовая информация, включается в трехмерные данные, модуль 1311 взаимного прогнозирования выполняет поиск, например, объема, информация атрибутов которого, например, информация формы или цветовая информация, является наиболее аналогичной целевому объему кодирования в опорном пространстве, в качестве прогнозированного объема для целевого объема кодирования в целевом пространстве кодирования. Это опорное пространство, например, представляет собой опорное пространство, для которого выполнен вышеуказанный процесс вращения и перемещения в пространстве. Модуль 1311 взаимного прогнозирования формирует прогнозированный объем с использованием объема (опорного объема), полученного через поиск. Фиг. 47 является схемой для описания операции формирования прогнозированного объема. При кодировании целевого объема кодирования (idx объема=0), показанного на фиг. 47 с использованием взаимного прогнозирования, модуль 1311 взаимного прогнозирования выполняет поиск объема с наименьшим остатком прогнозирования, который представляет собой разность между целевым объемом кодирования и опорным объемом, при последовательном сканировании опорного объема в опорном пространстве. Модуль 1311 взаимного прогнозирования выбирает объем с наименьшим остатком прогнозирования в качестве прогнозированного объема. Остатки прогнозирования целевого объема кодирования и прогнозированного объема кодируются посредством процессов, выполняемых посредством преобразователя 1303 и последующих процессоров. Остаток прогнозирования здесь представляет собой разность между информацией атрибутов целевого объема кодирования и информацией атрибутов прогнозированного объема. Устройство 1300 кодирования трехмерных данных присоединяет, к заголовку и т.п. потока битов, idx объема опорного объема в опорном пространстве, в качестве прогнозированного объема.
[0415] В примере, показанном на фиг. 47, опорный объем с idx объема=4 из опорного пространства L0R0 выбирается в качестве прогнозированного объема для целевого объема кодирования. Остатки прогнозирования целевого объема кодирования и опорного объема и idx опорного объема=4 затем кодируются и присоединяются к потоку битов.
[0416] Следует отметить, что описан пример, в котором прогнозированный объем информации атрибутов формируется, но идентичный процесс может применяться к прогнозированному объему информации позиции.
[0417] Контроллер 1312 прогнозирования управляет тем, следует кодировать целевой объем кодирования с использованием внутреннего прогнозирования или взаимного прогнозирования. Режим, включающий в себя внутреннее прогнозирование и взаимное прогнозирование, называется здесь "режимом прогнозирования". Например, контроллер 1312 прогнозирования вычисляет остаток прогнозирования, когда целевой объем кодирования прогнозируется с использованием внутреннего прогнозирования, и остаток прогнозирования, когда целевой объем кодирования прогнозируется с использованием взаимного прогнозирования, в качестве значений оценки и выбирает режим прогнозирования, значение оценки которого меньше. Следует отметить, что контроллер 1312 прогнозирования может вычислять фактический объем кодирования посредством применения ортогонального преобразования, квантования и энтропийного кодирования к остатку прогнозирования внутреннего прогнозирования и к остатку прогнозирования взаимного прогнозирования и выбирать режим прогнозирования с использованием вычисленного объема кодирования в качестве значения оценки. Служебная информация (информация idx опорных объемов и т.д.), отличная от остатка прогнозирования, может добавляться в значение оценки. Контроллер 1312 прогнозирования может непрерывно выбирать внутреннее прогнозирование, когда заранее определена необходимость кодировать целевое пространство кодирования с использованием внутреннего пространства.
[0418] Энтропийный кодер 1313 формирует кодированный сигнал (кодированный поток битов) посредством кодирования переменной длины квантованного коэффициента, который представляет собой ввод из квантователя 1304. Конкретно, энтропийный кодер 1313, например, преобразует в двоичную форму квантованный коэффициент и арифметически кодирует получаемый двоичный сигнал.
[0419] Далее описывается устройство декодирования трехмерных данных, которое декодирует кодированный сигнал, сформированный посредством устройства 1300 кодирования трехмерных данных. Фиг. 48 является блок-схемой устройства 1400 декодирования трехмерных данных согласно настоящему варианту осуществления. Это устройство 1400 декодирования трехмерных данных включает в себя энтропийный декодер 1401, обратный квантователь 1402, обратный преобразователь 1403, сумматор 1404, запоминающее устройство 1405 опорных объемов, модуль 1406 внутреннего прогнозирования, запоминающее устройство 1407 опорных пространств, модуль 1408 взаимного прогнозирования и контроллер 1409 прогнозирования.
[0420] Энтропийный декодер 1401 декодирует на основе кода переменной длины кодированный сигнал (кодированный поток битов). Например, энтропийный декодер 1401 формирует двоичный сигнал посредством арифметического декодирования кодированного сигнала и формирует квантованный коэффициент с использованием сформированного двоичного сигнала.
[0421] Обратный квантователь 1402 формирует обратно квантованный коэффициент посредством обратного квантования квантованного коэффициента, введенного из энтропийного декодера 1401, с использованием параметра квантования, присоединенного к потоку битов, и т.п.
[0422] Обратный преобразователь 1403 формирует остаток прогнозирования посредством обратного преобразования обратно квантованного коэффициента, введенного из обратного квантователя 1402. Например, обратный преобразователь 1403 формирует остаток прогнозирования посредством обратного ортогонального преобразования обратно квантованного коэффициента, на основе информации, присоединенной к потоку битов.
[0423] Сумматор 1404 суммирует, чтобы формировать восстановленный объем, (i) остаток прогнозирования, сформированный посредством обратного преобразователя 1403, с (ii) прогнозированным объемом, сформированным через внутреннее прогнозирование или внутреннее прогнозирование. Этот восстановленный объем выводится в качестве декодированных трехмерных данных и сохраняется в запоминающем устройстве 1405 опорных объемов или запоминающем устройстве 1407 опорных пространств.
[0424] Модуль 1406 внутреннего прогнозирования формирует прогнозированный объем через внутреннее прогнозирование с использованием опорного объема в запоминающем устройстве 1405 опорных объемов и информации, присоединенной к потоку битов. Конкретно, модуль 1406 внутреннего прогнозирования получает информацию соседних объемов (например, idx объема), присоединенную к потоку битов, и информацию режима прогнозирования и формирует прогнозированный объем через режим, указываемый посредством информации режима прогнозирования, с использованием соседнего объема, указываемого в информации соседних объемов. Следует отметить, что конкретика этих процессов является идентичной вышеуказанным процессам, выполняемым посредством модуля 1309 внутреннего прогнозирования, за исключением того, для чего используется информация, присоединенная к потоку битов.
[0425] Модуль 1408 взаимного прогнозирования формирует прогнозированный объем через взаимное прогнозирование с использованием опорного пространства в запоминающем устройстве 1407 опорных пространств и информации, присоединенной к потоку битов. Конкретно, модуль 1408 взаимного прогнозирования применяет процесс вращения и перемещения в пространстве к опорному пространству с использованием RT-информации в расчете на опорное пространство, присоединенной к потоку битов, и формирует прогнозированный объем с использованием опорного пространства после вращения и перемещения в пространстве. Следует отметить, что, когда RT-флаг присутствует в потоке битов в расчете на опорное пространство, модуль 1408 взаимного прогнозирования применяет процесс вращения и перемещения в пространстве к опорному пространству в соответствии с RT-флагом. Следует отметить, что конкретика этих процессов является идентичной вышеуказанным процессам, выполняемым посредством модуля 1311 взаимного прогнозирования, за исключением того, для чего используется информация, присоединенная к потоку битов.
[0426] Контроллер 1409 прогнозирования управляет тем, следует декодировать целевой объем декодирования с использованием внутреннего прогнозирования или взаимного прогнозирования. Например, контроллер 1409 прогнозирования выбирает внутреннее прогнозирование или взаимное прогнозирование в соответствии с информацией, которая присоединяется к потоку битов, и указывает режим прогнозирования, который должен использоваться. Следует отметить, что контроллер 1409 прогнозирования может непрерывно выбирать внутреннее прогнозирование, когда заранее определена необходимость декодировать целевое пространство декодирования с использованием внутреннего пространства.
[0427] В дальнейшем в этом документе описываются варьирования настоящего варианта осуществления. В настоящем варианте осуществления, описан пример, в котором вращение и перемещение в пространстве применяется в единицах пространств, но вращение и перемещение в пространстве также может применяться в меньших единицах. Например, устройство 1300 кодирования трехмерных данных может разделять пространство на подпространства и применять вращение и перемещение в пространстве в единицах подпространств. В этом случае, устройство 1300 кодирования трехмерных данных формирует RT-информацию в расчете на подпространство и присоединяет сформированную RT-информацию к заголовку и т.п. потока битов. Устройство 1300 кодирования трехмерных данных может применять вращение и перемещение в пространстве в единицах объемов, которые представляют собой единицу кодирования. В этом случае, устройство 1300 кодирования трехмерных данных формирует RT-информацию в единицах кодированных объемов и присоединяет сформированную RT-информацию к заголовку и т.п. потока битов. Вышеуказанное также может комбинироваться. Другими словами, устройство 1300 кодирования трехмерных данных может применять вращение и перемещение в пространстве в больших единицах и затем применять вращение и перемещение в пространстве в небольших единицах. Например, устройство 1300 кодирования трехмерных данных может применять вращение и перемещение в пространстве в единицах пространств, а также может применять различные вращения и перемещения в пространстве к каждому из множества объемов, включенных в полученные пространства.
[0428] В настоящем варианте осуществления, описан пример, в котором вращение и перемещение в пространстве применяется к опорному пространству, но не обязательно ограничивается этим. Например, устройство 1300 кодирования трехмерных данных может применять процесс масштабирования и изменять размер трехмерных данных. Устройство 1300 кодирования трехмерных данных также может применять одно или два из вращения, перемещения в пространстве и масштабирования. При применении процессов на нескольких стадиях и различных единицах, как указано выше, тип процессов, применяемых в каждой единице, может отличаться. Например, вращение и перемещение в пространстве может применяться в единицах пространств, и перемещение в пространстве может применяться в единицах объемов.
[0429] Следует отметить, что эти варьирования также являются применимыми к устройству 1400 декодирования трехмерных данных.
[0430] Как указано выше, устройство 1300 кодирования трехмерных данных согласно настоящему варианту осуществления выполняет следующие процессы. Фиг. 48 является блок-схемой последовательности операций способа для процесса взаимного прогнозирования, выполняемого посредством устройства 1300 кодирования трехмерных данных.
[0431] Устройство 1300 кодирования трехмерных данных формирует прогнозированную информацию позиции (например, прогнозированный объем) с использованием информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные (например, опорное пространство), ассоциированные со временем, отличающимся от времени, ассоциированного с текущими трехмерными данными (например, целевым пространством кодирования) (S1301). Конкретно, устройство 1300 кодирования трехмерных данных формирует прогнозированную информацию позиции посредством применения процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные.
[0432] Следует отметить, что устройство 1300 кодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве с использованием первой единицы (например, пространств) и может выполнять формирование прогнозированной информации позиции с использованием второй единицы (например, объемов), которая меньше первой единицы. Например, устройство 1300 кодирования трехмерных данных выполняет поиск объема из множества объемов, включенных в опорное пространство после вращения и перемещения в пространстве, информация позиции которого отличается меньше всего от информации позиции целевого объема кодирования, включенного в целевое пространство кодирования. Следует отметить, что устройство 1300 кодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве и формирование прогнозированной информации позиции в идентичной единице.
[0433] Устройство 1300 кодирования трехмерных данных может формировать прогнозированную информацию позиции посредством применения (i) первого процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, и (ii) второго процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, полученной через первый процесс вращения и перемещения в пространстве, причем первый процесс вращения и перемещения в пространстве использует первую единицу (например, пространства), и причем второй процесс вращения и перемещения в пространстве использует вторую единицу (например, объемы), которая меньше первой единицы.
[0434] Например, как проиллюстрировано на фиг. 41, информация позиции относительно трехмерных точек и прогнозированная информация позиции представляется с использованием структуры в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует широту выше глубины в структуре в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует глубину выше широты в структуре в виде дерева октантов.
[0435] Как проиллюстрировано на фиг. 46, устройство 1300 кодирования трехмерных данных кодирует RT-флаг, который указывает то, следует или нет применять процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные. Другими словами, устройство 1300 кодирования трехмерных данных формирует кодированный сигнал (кодированный поток битов), включающий в себя RT-флаг. Устройство 1300 кодирования трехмерных данных кодирует RT-информацию, которая указывает контент процесса вращения и перемещения в пространстве. Другими словами, устройство 1300 кодирования трехмерных данных формирует кодированный сигнал (кодированный поток битов), включающий в себя RT-информацию. Следует отметить, что устройство 1300 кодирования трехмерных данных может кодировать RT-информацию, когда RT-флаг указывает необходимость применять процесс вращения и перемещения в пространстве, и не должен обязательно кодировать RT-информацию, когда RT-флаг указывает необходимость не применять процесс вращения и перемещения в пространстве.
[0436] Трехмерные данные включают в себя, например, информацию позиции относительно трехмерных точек и информацию атрибутов (цветовую информацию и т.д.) каждой трехмерной точки. Устройство 1300 кодирования трехмерных данных формирует прогнозированную информацию атрибутов с использованием информации атрибутов трехмерных точек, включенных в трехмерные опорные данные (S1302).
[0437] Устройство 1300 кодирования трехмерных данных затем кодирует информацию позиции относительно трехмерных точек, включенных в текущие трехмерные данные, с использованием прогнозированной информации позиции. Например, как проиллюстрировано на фиг. 38, устройство 1300 кодирования трехмерных данных вычисляет дифференциальную информацию позиции, причем дифференциальная информация позиции представляет собой разность между прогнозированной информацией позиции и информацией позиции относительно трехмерных точек, включенных в текущие трехмерные данные (S1303).
[0438] Устройство 1300 кодирования трехмерных данных кодирует информацию атрибутов трехмерных точек, включенных в текущие трехмерные данные, с использованием прогнозированной информации атрибутов. Например, устройство 1300 кодирования трехмерных данных вычисляет дифференциальную информацию атрибутов, причем дифференциальная информация атрибутов представляет собой разность между прогнозированной информацией атрибутов и информацией атрибутов относительно трехмерных точек, включенных в текущие трехмерные данные (S1304). Устройство 1300 кодирования трехмерных данных затем выполняет преобразование и квантование для вычисленной дифференциальной информации атрибутов (S1305).
[0439] В завершение, устройство 1300 кодирования трехмерных данных кодирует (например, энтропийно кодирует) дифференциальную информацию позиции и квантованную дифференциальную информацию атрибутов (S1036). Другими словами, устройство 1300 кодирования трехмерных данных формирует кодированный сигнал (кодированный поток битов), включающий в себя дифференциальную информацию позиции и дифференциальную информацию атрибутов.
[0440] Следует отметить, что, когда информация атрибутов не включается в трехмерные данные, устройство 1300 кодирования трехмерных данных не должно обязательно выполнять этапы S1302, S1304 и S1305. Устройство 1300 кодирования трехмерных данных также может выполнять только одно из кодирования информации позиции относительно трехмерных точек и кодирования информации атрибутов трехмерных точек.
[0441] Порядок процессов, показанных на фиг. 49, представляет собой просто пример и не ограничен этим. Например, поскольку процессы относительно информации позиции (S1301 и S1303) и процессы относительно информации атрибутов (S1302, S1304 и S1305) являются отдельными друг от друга, они могут выполняться в предпочтительном порядке, и их часть также может выполняться параллельно.
[0442] В силу вышеуказанного, устройство 1300 кодирования трехмерных данных согласно настоящему варианту осуществления формирует прогнозированную информацию позиции с использованием информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, ассоциированные со временем, отличающимся от времени, ассоциированного с текущими трехмерными данными; и кодирует дифференциальную информацию позиции, которая представляет собой разность между прогнозированной информацией позиции и информацией позиции относительно трехмерных точек, включенных в текущие трехмерные данные. Это позволяет повышать эффективность кодирования, поскольку можно уменьшать объем данных кодированного сигнала.
[0443] Устройство 1300 кодирования трехмерных данных согласно настоящему варианту осуществления формирует прогнозированную информацию атрибутов с использованием информации атрибутов относительно трехмерных точек, включенных в трехмерные опорные данные; и кодирует дифференциальную информацию атрибутов, которая представляет собой разность между прогнозированной информацией атрибутов и информацией атрибутов относительно трехмерных точек, включенных в текущие трехмерные данные. Это позволяет повышать эффективность кодирования, поскольку можно уменьшать объем данных кодированного сигнала.
[0444] Например, устройство 1300 кодирования трехмерных данных включает в себя процессор и запоминающее устройство. Процессор использует запоминающее устройство для того, чтобы выполнять вышеуказанные процессы.
[0445] Фиг. 48 является блок-схемой последовательности операций способа для процесса взаимного прогнозирования, выполняемого посредством устройства 1400 декодирования трехмерных данных.
[0446] Устройство 1400 декодирования трехмерных данных декодирует (например, энтропийно декодирует) дифференциальную информацию позиции и дифференциальную информацию атрибутов из кодированного сигнала (кодированного потока битов) (S1401).
[0447] Устройство 1400 декодирования трехмерных данных декодирует, из кодированного сигнала, RT-флаг, который указывает то, следует или нет применять процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные. Устройство 1400 декодирования трехмерных данных кодирует RT-информацию, которая указывает контент процесса вращения и перемещения в пространстве. Следует отметить, что устройство 1400 декодирования трехмерных данных может декодировать RT-информацию, когда RT-флаг указывает необходимость применять процесс вращения и перемещения в пространстве, и не должен обязательно декодировать RT-информацию, когда RT-флаг указывает необходимость не применять процесс вращения и перемещения в пространстве.
[0448] Устройство 1400 декодирования трехмерных данных затем выполняет обратное преобразование и обратное квантование для декодированной дифференциальной информации атрибутов (S1402).
[0449] Устройство 1400 декодирования трехмерных данных затем формирует прогнозированную информацию позиции (например, прогнозированный объем) с использованием информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные (например, опорное пространство), ассоциированные со временем, отличающимся от времени, ассоциированного с текущими трехмерными данными (например, целевым пространством декодирования) (S1403). Конкретно, устройство 1400 декодирования трехмерных данных формирует прогнозированную информацию позиции посредством применения процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные.
[0450] Более конкретно, когда RT-флаг указывает необходимость применять процесс вращения и перемещения в пространстве, устройство 1400 декодирования трехмерных данных применяет процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, указываемые в RT-информации. Напротив, когда RT-флаг указывает необходимость не применять процесс вращения и перемещения в пространстве, устройство 1400 декодирования трехмерных данных не применяет процесс вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные.
[0451] Следует отметить, что устройство 1400 декодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве с использованием первой единицы (например, пространств) и может выполнять формирование прогнозированной информации позиции с использованием второй единицы (например, объемов), которая меньше первой единицы. Следует отметить, что устройство 1400 декодирования трехмерных данных может выполнять процесс вращения и перемещения в пространстве и формирование прогнозированной информации позиции в идентичной единице.
[0452] Устройство 1400 декодирования трехмерных данных может формировать прогнозированную информацию позиции посредством применения (i) первого процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, включенных в трехмерные опорные данные, и (ii) второго процесса вращения и перемещения в пространстве к информации позиции относительно трехмерных точек, полученной через первый процесс вращения и перемещения в пространстве, причем первый процесс вращения и перемещения в пространстве использует первую единицу (например, пространства), и причем второй процесс вращения и перемещения в пространстве использует вторую единицу (например, объемы), которая меньше первой единицы.
[0453] Например, как проиллюстрировано на фиг. 41, информация позиции относительно трехмерных точек и прогнозированная информация позиции представляется с использованием структуры в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует широту выше глубины в структуре в виде дерева октантов. Например, информация позиции относительно трехмерных точек и прогнозированная информация позиции выражается в порядке сканирования, который приоритезирует глубину выше широты в структуре в виде дерева октантов.
[0454] Устройство 1400 декодирования трехмерных данных формирует прогнозированную информацию атрибутов с использованием информации атрибутов трехмерных точек, включенных в трехмерные опорные данные (S1404).
[0455] Устройство 1400 декодирования трехмерных данных затем восстанавливает информацию позиции относительно трехмерных точек, включенных в текущие трехмерные данные, посредством декодирования кодированной информации позиции, включенной в кодированный сигнал, с использованием прогнозированной информации позиции. Кодированная информация позиции здесь представляет собой дифференциальную информацию позиции. Устройство 1400 декодирования трехмерных данных восстанавливает информацию позиции относительно трехмерных точек, включенных в текущие трехмерные данные, посредством добавления дифференциальной информации позиции в прогнозированную информацию позиции (S1405).
[0456] Устройство 1400 декодирования трехмерных данных восстанавливает информацию атрибутов трехмерных точек, включенных в текущие трехмерные данные, посредством декодирования кодируемой информации атрибутов, включенной в кодированный сигнал, с использованием прогнозированной информации атрибутов. Кодированная информация атрибутов здесь представляет собой дифференциальную информацию позиции. Устройство 1400 декодирования трехмерных данных восстанавливает информацию атрибутов относительно трехмерных точек, включенных в текущие трехмерные данные, посредством добавления дифференциальной информации атрибутов в прогнозированную информацию атрибутов (S1406).
[0457] Следует отметить, что, когда информация атрибутов не включается в трехмерные данные, устройство 1400 декодирования трехмерных данных не должно обязательно выполнять этапы S1402, S1404 и S1406. Устройство 1400 декодирования трехмерных данных также может выполнять только одно из декодирования информации позиции относительно трехмерных точек и декодирования информации атрибутов трехмерных точек.
[0458] Порядок процессов, показанных на фиг. 50, представляет собой просто пример и не ограничен этим. Например, поскольку процессы относительно информации позиции (S1403 и S1405) и процессы относительно информации атрибутов (S1402, S1404 и S1406) являются отдельными друг от друга, они могут выполняться в предпочтительном порядке, и их часть также может выполняться параллельно.
[0459] Вариант 8 осуществления
В настоящем варианте осуществления, в дальнейшем описывается адаптивное энтропийное кодирование (арифметическое кодирование), выполняемое для кодов заполнения дерева октантов.
[0460] Фиг. 51 является схемой, иллюстрирующей пример структуры в виде дерева квадрантов. Фиг. 52 является схемой, иллюстрирующей коды заполнения древовидной структуры, проиллюстрированной на фиг. 51. Фиг. 53 является схемой, принципиально иллюстрирующей операцию, выполняемую посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления.
[0461] Устройство кодирования трехмерных данных согласно настоящему варианту осуществления энтропийно кодирует 8-битовый код заполнения в дереве октантов. Устройство кодирования трехмерных данных также обновляет таблицу кодирования в процессе энтропийного кодирования для кода заполнения. Дополнительно, устройство кодирования трехмерных данных не использует одну таблицу кодирования, а использует адаптивную таблицу кодирования, с тем чтобы использовать информацию подобия трехмерных точек. Другими словами, устройство кодирования трехмерных данных использует таблицы кодирования.
[0462] Информация подобия, например, представляет собой геометрическую информацию трехмерной точки, информацию структуры дерева октантов или информацию атрибутов трехмерной точки.
[0463] Следует отметить, что хотя дерево квадрантов показано как пример на фиг. 51-53, идентичный способ может применяться к N-арному дереву, такому как двоичное дерево, дерево октантов и дерево гексадекантов. Например, устройство кодирования трехмерных данных энтропийно кодирует 8-битовый код заполнения в случае дерева октантов, 4-битовый код заполнения в случае дерева квадрантов и 16-битовый код заполнения в случае дерева гексадекантов, с использованием адаптивной таблицы (также называемой "таблицей кодирования").
[0464] Далее описывается адаптивный процесс энтропийного кодирования с использованием геометрической информации трехмерной точки.
[0465] Когда локальные геометрии двух узлов в древовидной структуре являются аналогичными друг другу, имеется вероятность того, что состояния заполнения (т.е. состояния, указывающие то, включается или нет трехмерная точка) дочерних узлов являются аналогичными друг другу. Как результат, устройство кодирования трехмерных данных выполняет группировку с использованием локальной геометрии родительского узла. Это обеспечивает возможность устройству кодирования трехмерных данных группировать состояния заполнения дочерних узлов и использовать различную таблицу кодирования для каждой группы. Соответственно, можно повышать эффективность энтропийного кодирования.
[0466] Фиг. 54 является схемой, иллюстрирующей пример геометрической информации. Геометрическая информация включает в себя информацию, указывающую то, является или нет каждый из соседних узлов для текущего узла занятым (т.е. включает или нет в себя трехмерную точку). Например, устройство кодирования трехмерных данных вычисляет локальную геометрию текущего узла с использованием информации, указывающей то, включает или нет соседний узел в себя трехмерную точку (является занятым или незанятым). Соседний узел, например, представляет собой узел, пространственно расположенный около текущего узла, или узел, расположенный в идентичной позиции в другое время для текущего узла или пространственно расположенный около позиции.
[0467] На фиг. 54, заштрихованный куб указывает текущий узел. Белый куб представляет собой соседний узел и указывает узел, включающий в себя трехмерную точку. На фиг. 54, геометрический шаблон, указываемый в (2), получается посредством вращения геометрического шаблона, указываемого в (1). Соответственно, устройство кодирования трехмерных данных определяет то, что эти геометрические шаблоны имеют высокое геометрическое подобие, и энтропийно кодирует геометрические шаблоны с использованием идентичной таблицы кодирования. Помимо этого, устройство кодирования трехмерных данных определяет то, что геометрические шаблоны, указываемые в (3) и (4), имеют низкое геометрическое подобие, и энтропийно кодирует геометрические шаблоны с использованием других таблиц кодирования.
[0468] Фиг. 55 является схемой, иллюстрирующей пример кодов заполнения текущих узлов в геометрических шаблонах (1)-(4), проиллюстрированных на фиг. 54, и таблиц кодирования, используемых для энтропийного кодирования. Как проиллюстрировано выше, устройство кодирования трехмерных данных определяет то, что геометрические шаблоны (1) и (2) включаются в идентичную геометрическую группу, и использует идентичную таблицу A кодирования для геометрических шаблонов (1) и (2). Устройство кодирования трехмерных данных использует таблицу B кодирования и таблицу C кодирования для геометрических шаблонов (3) и (4), соответственно.
[0469] Как проиллюстрировано на фиг. 55, возникает случай, когда коды заполнения текущих узлов в геометрических шаблонах (1) и (2), включенных в идентичную геометрическую группу, являются идентичными друг другу.
[0470] Далее описывается адаптивный процесс энтропийного кодирования с использованием информации структуры древовидной структуры. Например, информация структуры включает в себя информацию, указывающую слой, которому принадлежит текущий узел.
[0471] Фиг. 56 является схемой, иллюстрирующей пример древовидной структуры. Вообще говоря, локальная форма объекта зависит от критерия поиска. Например, древовидная структура имеет тенденцию быть более разреженной в нижнем слое, чем в верхнем слое. Соответственно, устройство кодирования трехмерных данных использует различные таблицы кодирования для верхних слоев и нижних слоев, как проиллюстрировано на фиг. 56, что позволяет повышать эффективность энтропийного кодирования.
[0472] Другими словами, когда устройство кодирования трехмерных данных кодирует код заполнения каждого слоя, устройство кодирования трехмерных данных может использовать различную таблицу кодирования для каждого слоя. Например, когда устройство кодирования трехмерных данных кодирует код заполнения слоя N (N=0-6), устройство кодирования трехмерных данных может выполнять энтропийное кодирование для древовидной структуры, проиллюстрированной на фиг. 56, с использованием таблицы кодирования для слоя N. Поскольку это обеспечивает возможность устройству кодирования трехмерных данных выбирать таблицу кодирования в соответствии с шаблоном появления кода заполнения каждого слоя, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0473] Кроме того, как проиллюстрировано на фиг. 56, устройство кодирования трехмерных данных может использовать таблицу A кодирования для кодов заполнения слоев 0-2 и может использовать таблицу B кодирования для кодов заполнения слоев 3-6. Поскольку это обеспечивает возможность устройству кодирования трехмерных данных выбирать таблицу кодирования в соответствии с шаблоном появления кода заполнения для каждой группы слоев, устройство кодирования трехмерных данных может повышать эффективность кодирования. Устройство кодирования трехмерных данных может присоединять информацию таблицы кодирования, используемой для каждого слоя, к заголовку потока битов. Альтернативно, таблица кодирования, используемая для каждого слоя, может быть предварительно задана посредством стандартов и т.д.
[0474] Далее описывается адаптивный процесс энтропийного кодирования с использованием информации атрибутов (информации свойств) трехмерной точки. Например, информация атрибутов включает в себя информацию относительно объекта, включающего в себя текущий узел, или информацию относительно нормального вектора текущего узла.
[0475] Можно группировать трехмерные точки, имеющие аналогичную геометрию, с использованием фрагментов информации атрибутов трехмерных точек. Например, нормальный вектор, указывающий направление каждой из трехмерных точек, может использоваться в качестве общей информации атрибутов трехмерных точек. Можно находить геометрию, связанную с аналогичным кодом заполнения в древовидной структуре, посредством использования нормального вектора.
[0476] Кроме того, цвет или степень отражения (коэффициент отражения) может использоваться в качестве информации атрибутов. Например, устройство кодирования трехмерных данных группирует трехмерные точки, имеющие аналогичную геометрию, с использованием цветов или коэффициентов отражения трехмерных точек, и выполняет такой процесс, как переключение между таблицами кодирования для каждой из групп.
[0477] Фиг. 57 является схемой для описания переключения между таблицами кодирования на основе нормального вектора. Как проиллюстрировано на фиг. 57, когда группы нормальных векторов, которым принадлежат нормальные векторы текущих узлов, отличаются, различные таблицы кодирования используются. Например, нормальный вектор, включенный в предварительно определенный диапазон, классифицируется на одну группу нормальных векторов.
[0478] Когда объекты принадлежат различным категориям, имеется высокая вероятность того, что коды заполнения отличаются. Соответственно, устройство кодирования трехмерных данных может выбирать таблицу кодирования в соответствии с категорией объекта, которому принадлежит текущий узел. Фиг. 58 является схемой для описания переключения между таблицами кодирования на основе категории объекта. Как проиллюстрировано на фиг. 58, когда объекты принадлежат различным категориям, различные таблицы кодирования используются.
[0479] Далее описывается пример структуры потока битов согласно настоящему варианту осуществления. Фиг. 59 является схемой, иллюстрирующей пример структуры потока битов, сформированного посредством устройства кодирования трехмерных данных согласно настоящему варианту осуществления. Как проиллюстрировано на фиг. 59, поток битов включает в себя группу таблиц кодирования, табличные индексы и кодированные коды заполнения. Группа таблиц кодирования включает в себя таблицы кодирования.
[0480] Табличный индекс указывает таблицу кодирования, используемую для энтропийного кодирования последующего кодированного кода заполнения. Кодированный код заполнения представляет собой код заполнения, который энтропийно кодирован. Как проиллюстрировано на фиг. 59, поток битов также включает в себя комбинации табличного индекса и кодированного кода заполнения.
[0481] Например, в примере, проиллюстрированном на фиг. 59, кодированный код 0 заполнения представляет собой данные, которые энтропийно кодированы с использованием контекстной модели (также называемой "контекстом"), указываемой посредством табличного индекса 0. Кодированный код 1 заполнения представляет собой данные, которые энтропийно кодированы с использованием контекста, указываемого посредством табличного индекса 1. Контекст для кодирования кодированного кода 0 заполнения может быть предварительно задан посредством стандартов и т.д., и устройство декодирования трехмерных данных может использовать этот контекст при декодировании кодированного кода 0 заполнения. Поскольку это исключает необходимость присоединения табличного индекса к потоку битов, можно уменьшать объем служебной информации.
[0482] Кроме того, устройство кодирования трехмерных данных может присоединять, в заголовке, информацию для сброса каждого контекста.
[0483] Устройство кодирования трехмерных данных определяет таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла и кодирует код заполнения с использованием определенной таблицы кодирования. Устройство кодирования трехмерных данных присоединяет результат кодирования и информацию (например, табличный индекс) таблицы кодирования, используемой для кодирования, к потоку битов, и передает поток битов в устройство декодирования трехмерных данных. Это обеспечивает возможность устройству декодирования трехмерных данных декодировать код заполнения с использованием информации таблицы кодирования, присоединенной к заголовку.
[0484] Кроме того, устройство кодирования трехмерных данных не должно обязательно присоединять информацию таблицы кодирования, используемой для кодирования, к потоку битов, и устройство декодирования трехмерных данных может определять таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла, который декодирован, с использованием способа, идентичного способу для устройства кодирования трехмерных данных, и декодировать код заполнения с использованием определенной таблицы кодирования. Поскольку это исключает необходимость присоединения информации таблицы кодирования к потоку битов, можно уменьшать объем служебной информации.
[0485] Фиг. 60 и фиг. 61 являются схемой, иллюстрирующей пример таблицы кодирования. Как проиллюстрировано на фиг. 60 и фиг. 61, одна таблица кодирования показывает, для каждого значения 8-битового кода заполнения, контекстную модель и тип контекстной модели, ассоциированные со значением.
[0486] В качестве с таблицей кодирования, проиллюстрированной на фиг. 60, идентичная контекстная модель (контекст) может применяться к кодам заполнения. Помимо этого, другая контекстная модель может назначаться каждому коду заполнения. Поскольку это обеспечивает возможность назначения контекстной модели в соответствии с вероятностью появления кода заполнения, можно повышать эффективность кодирования.
[0487] Тип контекстной модели указывает, например, то, контекстная модель представляет собой контекстную модель, которая обновляет таблицу вероятностей в соответствии с частотой возникновения кода заполнения, либо представляет собой контекстную модель, имеющую фиксированную таблицу вероятностей.
[0488] Далее приводится другой пример потока битов и таблицы кодирования. Фиг. 61 является схемой, иллюстрирующей варьирование структуры потока битов. Как проиллюстрировано на фиг. 61, поток битов включает в себя группу таблиц кодирования и кодированный код заполнения. Группа таблиц кодирования включает в себя таблицы кодирования.
[0489] Фиг. 63 и фиг. 64 являются схемой, иллюстрирующей пример таблицы кодирования. Как проиллюстрировано на фиг. 63 и фиг. 64, одна таблица кодирования показывает, для каждого 1 бита, включенного в код заполнения, контекстную модель и тип контекстной модели, ассоциированные с 1 битом.
[0490] Фиг. 65 является схемой, иллюстрирующей пример взаимосвязи между кодом заполнения и числами битов кода заполнения.
[0491] Как указано выше, устройство кодирования трехмерных данных может обрабатывать код заполнения в качестве двоичных данных, назначать различную контекстную модель для каждого бита и энтропийно кодировать код заполнения. Поскольку это обеспечивает возможность назначения контекстной модели в соответствии с вероятностью появления каждого бита кода заполнения, можно повышать эффективность кодирования.
[0492] В частности, каждый бит кода заполнения соответствует субблоку, полученному посредством разделения пространственного блока, соответствующего текущему узлу. Соответственно, когда субблоки в идентичной пространственной позиции в блоке имеют идентичную тенденцию, можно повышать эффективность кодирования. Например, когда земная поверхность или дорожная поверхность пересекает блок, в дереве октантов, четыре нижних блока включают в себя трехмерные точки, и четыре верхних блока не включают в себя трехмерные точки. Дополнительно, идентичный шаблон появляется в горизонтально размещаемых блоках. Соответственно, можно повышать эффективность кодирования посредством переключения между контекстами для каждого бита, как описано выше.
[0493] Также может использоваться контекстная модель, которая обновляет таблицу вероятностей в соответствии с частотой возникновения каждого бита кода заполнения. Помимо этого, может использоваться контекстная модель, имеющая фиксированную таблицу вероятностей.
[0494] Далее описываются процедуры для процесса кодирования трехмерных данных и процесса декодирования трехмерных данных согласно настоящему варианту осуществления.
[0495] Фиг. 66 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного кодирования с использованием геометрической информации.
[0496] В процессе разложения, дерево октантов формируется из начального ограничивающего прямоугольника трехмерных точек. Ограничивающий прямоугольник разделяется в соответствии с позицией трехмерной точки в ограничивающем прямоугольнике. В частности, непустое подпространство дополнительно разделяется. Затем, информация, указывающая то, включает или нет подпространство в себя трехмерную точку, кодируется в код заполнения. Следует отметить, что идентичный процесс выполняется в процессах, проиллюстрированных на фиг. 68 и фиг. 70.
[0497] Во-первых, устройство кодирования трехмерных данных получает введенные трехмерные точки (S1901). Затем, устройство кодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1902).
[0498] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1902), устройство кодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1903).
[0499] После этого устройство кодирования трехмерных данных получает геометрическую информацию (S1904) и выбирает таблицу кодирования на основе полученной геометрической информации (S1905). Здесь, как указано выше, геометрическая информация представляет собой информацию, указывающую то, например, геометрию состояний заполнения соседних блоков текущего узла.
[0500] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1906).
[0501] Этапы S1903-S1906 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1902), устройство кодирования трехмерных данных выводит поток битов, включающий в себя сформированную информацию (S1907).
[0502] Устройство кодирования трехмерных данных определяет таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла и кодирует битовую последовательность кода заполнения с использованием определенной таблицы кодирования. Устройство кодирования трехмерных данных присоединяет результат кодирования и информацию (например, табличный индекс) таблицы кодирования, используемой для кодирования, к потоку битов, и передает поток битов в устройство декодирования трехмерных данных. Это обеспечивает возможность устройству декодирования трехмерных данных декодировать код заполнения с использованием информации таблицы кодирования, присоединенной к заголовку.
[0503] Кроме того, устройство кодирования трехмерных данных не должно обязательно присоединять информацию таблицы кодирования, используемой для кодирования, к потоку битов, и устройство декодирования трехмерных данных может определять таблицу кодирования с использованием геометрической информации, информации структуры или информации атрибутов текущего узла, который декодирован, с использованием способа, идентичного способу для устройства кодирования трехмерных данных, и декодировать код заполнения с использованием определенной таблицы кодирования. Поскольку это исключает необходимость присоединения информации таблицы кодирования к потоку битов, можно уменьшать объем служебной информации.
[0504] Фиг. 67 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного декодирования с использованием геометрической информации.
[0505] Процесс разложения, включенный в процесс декодирования, является аналогичным процессу разложения, включенному в вышеописанный процесс кодирования, они отличаются по следующему аспекту. Устройство декодирования трехмерных данных разделяет начальный ограничивающий прямоугольник с использованием декодированного кода заполнения. Когда устройство декодирования трехмерных данных завершает процесс в расчете на единицу длины, устройство декодирования трехмерных данных сохраняет позицию ограничивающего прямоугольника в качестве позиции трехмерной точки. Следует отметить, что идентичный процесс выполняется в процессах, проиллюстрированных на фиг. 69 и фиг. 71.
[0506] Во-первых, устройство декодирования трехмерных данных получает введенный поток битов (S1911). Затем, устройство декодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1912).
[0507] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1912), устройство декодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1913).
[0508] После этого устройство декодирования трехмерных данных получает геометрическую информацию (S1914) и выбирает таблицу кодирования на основе полученной геометрической информации (S1915). Здесь, как указано выше, геометрическая информация представляет собой информацию, указывающую, например, геометрию состояний заполнения соседних блоков текущего узла.
[0509] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1916).
[0510] Этапы S1913-S1916 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1912), устройство декодирования трехмерных данных выводит трехмерные точки (S1917).
[0511] Фиг. 68 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного кодирования с использованием информации структуры.
[0512] Во-первых, устройство кодирования трехмерных данных получает введенные трехмерные точки (S1921). Затем, устройство кодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1922).
[0513] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1922), устройство кодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1923).
[0514] После этого устройство кодирования трехмерных данных получает информацию структуры (S1924) и выбирает таблицу кодирования на основе полученной информации структуры (S1925). Здесь, как указано выше, информация структуры представляет собой информацию, указывающую, например, слой, которому принадлежит текущий узел.
[0515] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1926).
[0516] Этапы S1923-S1926 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1922), устройство кодирования трехмерных данных выводит поток битов, включающий в себя сформированную информацию (S1927).
[0517] Фиг. 69 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного декодирования с использованием информации структуры.
[0518] Во-первых, устройство декодирования трехмерных данных получает введенный поток битов (S1931). Затем, устройство декодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1932).
[0519] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1932), устройство декодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1933).
[0520] После этого устройство декодирования трехмерных данных получает информацию структуры (S1934) и выбирает таблицу кодирования на основе полученной информации структуры (S1935). Здесь, как указано выше, информация структуры представляет собой информацию, указывающую, например, слой, которому принадлежит текущий узел.
[0521] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1936).
[0522] Этапы S1933-S1936 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1932), устройство декодирования трехмерных данных выводит трехмерные точки (S1937).
[0523] Фиг. 70 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного кодирования с использованием информации атрибутов.
[0524] Во-первых, устройство кодирования трехмерных данных получает введенные трехмерные точки (S1941). Затем, устройство кодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1942).
[0525] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1942), устройство кодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1943).
[0526] После этого устройство кодирования трехмерных данных получает информацию атрибутов (S1944) и выбирает таблицу кодирования на основе полученной информации атрибутов (S1945). Здесь, как указано выше, информация атрибутов представляет собой информацию, указывающую, например, нормальный вектор текущего узла.
[0527] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1946).
[0528] Этапы S1943-S1946 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1942), устройство кодирования трехмерных данных выводит поток битов, включающий в себя сформированную информацию (S1947).
[0529] Фиг. 71 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных, включающего в себя адаптивный процесс энтропийного декодирования с использованием информации атрибутов.
[0530] Во-первых, устройство декодирования трехмерных данных получает введенный поток битов (S1951). Затем, устройство декодирования трехмерных данных определяет то, завершается или нет процесс разложения в расчете на единицу длины (S1952).
[0531] Когда процесс разложения в расчете на единицу длины не завершается ("Нет" на S1952), устройство декодирования трехмерных данных формирует дерево октантов посредством выполнения процесса разложения для текущего узла (S1953).
[0532] После этого устройство кодирования трехмерных данных получает информацию атрибутов (S1954) и выбирает таблицу кодирования на основе полученной информации атрибутов (S1955). Здесь, как указано выше, информация атрибутов представляет собой информацию, указывающую, например, нормальный вектор текущего узла.
[0533] После этого, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S1956).
[0534] Этапы S1953-S1956 повторяются до тех пор, пока не будет завершен процесс разложения в расчете на единицу длины. Когда процесс разложения в расчете на единицу длины завершается ("Да" на S1952), устройство декодирования трехмерных данных выводит трехмерные точки (S1957).
[0535] Фиг. 72 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием геометрической информации (S1905).
[0536] Устройство кодирования трехмерных данных может выбирать таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения, с использованием, например, в качестве геометрической информации, информации геометрической группы древовидной структуры. Здесь, информация геометрической группы представляет собой информацию, указывающую геометрическую группу, включающую в себя геометрический шаблон текущего узла.
[0537] Как проиллюстрировано на фиг. 72, когда геометрическая группа, указываемая посредством геометрической информации, представляет собой геометрическую группу 0 ("Да" на S1961), устройство кодирования трехмерных данных выбирает таблицу 0 кодирования (S1962). Когда геометрическая группа, указываемая посредством геометрической информации, представляет собой геометрическую группу 1 ("Да" на S1963), устройство кодирования трехмерных данных выбирает таблицу 1 кодирования (S1964). В любом другом случае ("Нет" на S1963), устройство кодирования трехмерных данных выбирает таблицу 2 кодирования (S1965).
[0538] Следует отметить, что способ выбора таблицы кодирования не ограничен вышеуказанным. Например, когда геометрическая группа, указываемая посредством геометрической информации, представляет собой геометрическую группу 2, устройство кодирования трехмерных данных дополнительно может выбирать таблицу кодирования согласно значению геометрической группы, к примеру, с использованием таблицы 2 кодирования.
[0539] Например, геометрическая группа определяется с использованием информации заполнения, указывающей то, включает или нет узел, соседний с текущим узлом, в себя облако точек. Геометрические шаблоны, которые принимают идентичную форму посредством преобразования, такого как применение вращения, могут быть включены в идентичную геометрическую группу. Устройство кодирования трехмерных данных может выбирать геометрическую группу с использованием информации заполнения узла, который является соседним с текущим узлом или расположен около текущего узла и принадлежит слою, идентичному слою текущего узла. Помимо этого, устройство кодирования трехмерных данных может выбирать геометрическую группу с использованием информации заполнения узла, который принадлежит слою, отличающемуся от слоя текущего узла. Например, устройство кодирования трехмерных данных может выбирать геометрическую группу с использованием информации заполнения родительского узла, узла, соседнего с родительским узлом, или узла, расположенного около родительского узла.
[0540] Следует отметить, что то же применимо к процессу выбора таблицы кодирования с использованием геометрической информации (S1915) в устройстве декодирования трехмерных данных.
[0541] Фиг. 73 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации структуры (S1925).
[0542] Устройство кодирования трехмерных данных может выбирать таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения, с использованием, например, в качестве информации структуры, информации слоя древовидной структуры. Здесь, информация слоя указывает, например, слой, которому принадлежит текущий узел.
[0543] Как проиллюстрировано на фиг. 73, когда текущий узел принадлежит слою 0 ("Да" на S1971), устройство кодирования трехмерных данных выбирает таблицу 0 кодирования (S1972). Когда текущий узел принадлежит слою 1 ("Да" на S1973), устройство кодирования трехмерных данных выбирает таблицу 1 кодирования (S1974). В любом другом случае ("Нет" на S1973), устройство кодирования трехмерных данных выбирает таблицу 2 кодирования (S1975).
[0544] Следует отметить, что способ выбора таблицы кодирования не ограничен вышеуказанным. Например, когда текущий узел принадлежит слою 2, устройство кодирования трехмерных данных дополнительно может выбирать таблицу кодирования в соответствии со слоем, которому принадлежит текущий узел, к примеру, с использованием таблицы 2 кодирования.
[0545] То же применимо к процессу выбора таблицы кодирования с использованием информации структуры (S1935) в устройстве декодирования трехмерных данных.
[0546] Фиг. 74 является блок-схемой последовательности операций способа для процесса выбора таблицы кодирования с использованием информации атрибутов (S1945).
[0547] Устройство кодирования трехмерных данных может выбирать таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения, с использованием, в качестве информации атрибутов, информации относительно объекта, которому принадлежит текущий узел, или информации относительно нормального вектора текущего узла.
[0548] Как проиллюстрировано на фиг. 74, когда нормальный вектор текущего узла принадлежит группе 0 нормальных векторов ("Да" на S1981), устройство кодирования трехмерных данных выбирает таблицу 0 кодирования (S1982). Когда нормальный вектор текущего узла принадлежит группе 1 нормальных векторов ("Да" на S1983), устройство кодирования трехмерных данных выбирает таблицу 1 кодирования (S1984). В любом другом случае ("Нет" на S1983), устройство кодирования трехмерных данных выбирает таблицу 2 кодирования (S1985).
[0549] Следует отметить, что способ выбора таблицы кодирования не ограничен вышеуказанным. Например, когда нормальный вектор текущего узла принадлежит группе 2 нормальных векторов, устройство кодирования трехмерных данных дополнительно может выбирать таблицу кодирования в соответствии с группой нормальных векторов, которой принадлежит нормальный вектор текущего, к примеру, с использованием таблицы 2 кодирования.
[0550] Например, устройство кодирования трехмерных данных выбирает группу нормальных векторов с использованием информации относительно нормального вектора текущего узла. Например, устройство кодирования трехмерных данных определяет, в качестве идентичной группы нормальных векторов, нормальные векторы, имеющие расстояние между нормальными векторами, которое меньше или равно предварительно определенному пороговому значению.
[0551] Информация относительно объекта, которому принадлежит текущий узел, может представлять собой информацию относительно, например, человека, транспортного средства или здания.
[0552] Далее описываются конфигурации устройства 1900 кодирования трехмерных данных и устройства 1910 декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 75 является блок-схемой устройства 1900 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 1900 кодирования трехмерных данных, проиллюстрированное на фиг. 75, включает в себя формирователь 1901 деревьев октантов, модуль 1902 вычисления информации подобия, модуль 1903 выбора таблиц кодирования и энтропийный кодер 1904.
[0553] Формирователь 1901 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек и формирует код заполнения для каждого узла, включенного в дерево октантов. Модуль 1902 вычисления информации подобия получает, например, информацию подобия, которая представляет собой геометрическую информацию, информацию структуры или информацию атрибутов текущего узла. Модуль 1903 выбора таблиц кодирования выбирает контекст, который должен использоваться для энтропийного кодирования кода заполнения, согласно информации подобия текущего узла. Энтропийный кодер 1904 формирует поток битов посредством энтропийного кодирования кода заполнения с использованием выбранного контекста. Следует отметить, что энтропийный кодер 1904 может присоединять, к потоку битов, информацию, указывающую выбранный контекст.
[0554] Фиг. 76 является блок-схемой устройства 1910 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 1910 декодирования трехмерных данных, проиллюстрированное на фиг. 76, включает в себя формирователь 1911 деревьев октантов, модуль 1912 вычисления информации подобия, модуль 1913 выбора таблиц кодирования и энтропийный декодер 1914.
[0555] Формирователь 1911 деревьев октантов формирует дерево октантов, например, в порядке от нижнего слоя к верхнему слою с использованием информации, полученной из энтропийного декодера 1914. Модуль 1912 вычисления информации подобия получает информацию подобия, которая представляет собой геометрическую информацию, информацию структуры или информацию атрибутов текущего узла. Модуль 1913 выбора таблиц кодирования выбирает контекст, который должен использоваться для энтропийного кодирования кода заполнения, согласно информации подобия текущего узла. Энтропийный декодер 1914 формирует трехмерные точки посредством энтропийного декодирования кода заполнения с использованием выбранного контекста. Следует отметить, что энтропийный декодер 1914 может получать, посредством выполнения декодирования, информацию выбранного контекста, присоединенную к потоку битов, и использовать контекст, указываемый посредством информации.
[0556] Как проиллюстрировано на фиг. 63-65 выше, контексты предоставляются в соответствующие биты кода заполнения. Другими словами, устройство кодирования трехмерных данных энтропийно кодирует битовую последовательность, представляющую N-арную (N является целым числом, большим или равным 2) древовидную структуру трехмерных точек, включенных в трехмерные данные, с использованием таблицы кодирования, выбранной из таблиц кодирования. Битовая последовательность включает в себя N-битовую информацию для каждого узла в N-арной древовидной структуре. N-битовая информация включает в себя N фрагментов 1-битовой информации, каждый из которых указывает то, присутствует или нет трехмерная точка в соответствующем одном из N дочерних узлов относительно соответствующего узла. В каждой из таблиц кодирования, контекст предоставляется в каждый бит N-битовой информации. Устройство кодирования трехмерных данных энтропийно кодирует каждый бит N-битовой информации с использованием контекста, предоставленного в бит в выбранной таблице кодирования.
[0557] Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора контекста для каждого бита.
[0558] Например, при энтропийном кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе того, присутствует или нет трехмерная точка в каждом из соседних узлов для текущего узла. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе того, присутствует или нет трехмерная точка в соседнем узле.
[0559] Например, при энтропийном кодировании, устройство кодирования трехмерных данных (i) выбирает таблицу кодирования на основе шаблона компоновки, указывающего позицию размещения соседнего узла, в котором присутствует трехмерная точка, из числа соседних узлов, и (ii) выбирает идентичную таблицу кодирования для шаблонов компоновки, которые становятся идентичными посредством вращения, из числа шаблонов компоновки. Это обеспечивает возможность устройству кодирования трехмерных данных уменьшать увеличение числа таблиц кодирования.
[0560] Например, при энтропийном кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе слоя, которому принадлежит текущий узел. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе слоя, которому принадлежит текущий узел.
[0561] Например, при энтропийном кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе нормального вектора текущего узла. Это обеспечивает возможность устройству кодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе нормального вектора.
[0562] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0563] Устройство декодирования трехмерных данных энтропийно декодирует битовую последовательность, представляющую N-арную (N является целым числом, большим или равным 2) древовидную структуру трехмерных точек, включенных в трехмерные данные, с использованием таблицы кодирования, выбранной из таблиц кодирования. Битовая последовательность включает в себя N-битовую информацию для каждого узла в N-арной древовидной структуре. N-битовая информация включает в себя N фрагментов 1-битовой информации, каждый из которых указывает то, присутствует или нет трехмерная точка в соответствующем одном из N дочерних узлов относительно соответствующего узла. В каждой из таблиц кодирования, контекст предоставляется в каждый бит N-битовой информации. Устройство декодирования трехмерных данных энтропийно декодирует каждый бит N-битовой информации с использованием контекста, предоставленного в бит в выбранной таблице кодирования.
[0564] Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора контекста для каждого бита.
[0565] Например, при энтропийном декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе того, присутствует или нет трехмерная точка в каждом из соседних узлов для текущего узла. Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе того, присутствует или нет трехмерная точка в соседнем узле.
[0566] Например, при энтропийном декодировании, устройство декодирования трехмерных данных (i) выбирает таблицу кодирования на основе шаблона компоновки, указывающего позицию размещения соседнего узла, в котором присутствует трехмерная точка, из числа соседних узлов, и (ii) выбирает идентичную таблицу кодирования для шаблонов компоновки, которые становятся идентичными посредством вращения, из числа шаблонов компоновки. Это обеспечивает возможность устройству декодирования трехмерных данных уменьшать увеличение числа таблиц кодирования.
[0567] Например, при энтропийном декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе слоя, которому принадлежит текущий узел. Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе слоя, которому принадлежит текущий узел.
[0568] Например, при энтропийном декодировании, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться, из таблиц кодирования, на основе нормального вектора текущего узла. Это обеспечивает возможность устройству декодирования трехмерных данных повышать эффективность кодирования посредством выбора таблицы кодирования на основе нормального вектора.
[0569] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0570] Вариант 9 осуществления
В настоящем варианте осуществления, в дальнейшем описывается способ управления ссылкой, когда код заполнения кодируется. Следует отметить, что хотя далее описывается, главным образом, работа устройства кодирования трехмерных данных, устройство декодирования трехмерных данных может выполнять идентичный процесс.
[0571] Фиг. 77 и фиг. 78 являются схемой, иллюстрирующей опорную взаимосвязь согласно настоящему варианту осуществления. В частности, фиг. 77 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов, и фиг. 78 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области.
[0572] В настоящем варианте осуществления, когда устройство кодирования трехмерных данных кодирует информацию кодирования текущего узла, который должен кодироваться (в дальнейшем называется "текущим узлом"), устройство кодирования трехмерных данных ссылается на информацию кодирования каждого узла в родительском узле, которому принадлежит текущий узел. Тем не менее, в этом отношении, устройство кодирования трехмерных данных не ссылается на информацию кодирования каждого узла в другом узле (в дальнейшем называется "родительским соседним узлом"), который находится в слое, идентичном слою родительского узла. Другими словами, устройство кодирования трехмерных данных деактивирует или запрещает ссылку на родительский соседний узел.
[0573] Следует отметить, что устройство кодирования трехмерных данных может разрешать ссылку на информацию кодирования родительского узла (в дальнейшем также называется "прародительским узлом") относительно родительского узла. Другими словами, устройство кодирования трехмерных данных может кодировать информацию кодирования текущего узла со ссылкой на информацию кодирования каждого прародительского узла и родительского узла, которым принадлежит текущий узел.
[0574] Здесь, информация кодирования, например, представляет собой код заполнения. Когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, устройство кодирования трехмерных данных ссылается на информацию (в дальнейшем называемую "информацией заполнения"), указывающую то, включается или нет облако точек в каждый узел в родительском узле, которому принадлежит текущий узел. Иначе говоря, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, устройство кодирования трехмерных данных ссылается на код заполнения родительского узла. С другой стороны, устройство кодирования трехмерных данных не ссылается на информацию заполнения каждого узла в родительском соседнем узле. Другими словами, устройство кодирования трехмерных данных не ссылается на код заполнения родительского соседнего узла. Кроме того, устройство кодирования трехмерных данных может ссылаться на информацию заполнения каждого узла в прародительском узле. Другими словами, устройство кодирования трехмерных данных может ссылаться на информацию заполнения каждого из родительского узла и родительского соседнего узла.
[0575] Например, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, с использованием кода заполнения прародительского узла или родительского узла, которому принадлежит текущий узел. Следует отметить, что подробности описываются ниже. В это время, устройство кодирования трехмерных данных не должно обязательно ссылаться на код заполнения родительского соседнего узла. Поскольку это обеспечивает возможностью устройству кодирования трехмерных данных, при кодировании кода заполнения текущего узла, надлежащим образом выбирать таблицу кодирования согласно информации кода заполнения родительского узла или прародительского узла, устройство кодирования трехмерных данных может повышать эффективность кодирования. Кроме того, посредством отсутствия ссылки на соседний узел, устройство кодирования трехмерных данных может подавлять процесс проверки информации родительского соседнего узла и уменьшать емкость запоминающего устройства для сохранения информации. Кроме того, сканирование кода заполнения каждого узла дерева октантов в порядке в глубину упрощает кодирование.
[0576] Далее описывается пример выбора таблицы кодирования с использованием кода заполнения родительского узла. Фиг. 79 является схемой, иллюстрирующей пример текущего узла и соседних опорных узлов. Фиг. 80 является схемой, иллюстрирующей взаимосвязь между родительским узлом и узлами. Фиг. 81 является схемой, иллюстрирующей пример кода заполнения родительского узла. Здесь, соседний опорный узел представляет собой узел, на который ссылаются, когда текущий узел кодируется, из числа узлов, пространственно соседних с текущим узлом. В примере, показанном на фиг. 79, соседние узлы принадлежат слою, идентичному слою текущего узла. Кроме того, узел X, соседний с текущим узлом в направлении по оси X, узел Y, соседний с текущим блоком в направлении по оси Y, и узел Z, соседний с текущим блоком в направлении по оси Z, используются в качестве опорных соседних узлов. Другими словами, один соседний узел задается в качестве опорного соседнего узла в каждом из направлений по оси X, Y и Z.
[0577] Следует отметить, что номера узлов, показанные на фиг. 80, представляют собой один пример, и взаимосвязь между номерами узлов и позициями узлов не ограничена взаимосвязью, показанной на фиг. 80. Хотя узел 0 назначается биту низшего порядка, и узел 7 назначается биту высшего порядка на фиг. 81, назначения могут проводиться в обратном порядке. Помимо этого, каждый узел может назначаться любому биту.
[0578] Устройство кодирования трехмерных данных определяет таблицу кодирования, которая должна использоваться, когда устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла, например, с использованием следующего уравнения.
[0579] CodingTable = (FlagX<<2)+(FlagY<<1)+(FlagZ)
[0580] Здесь, CodingTable указывает таблицу кодирования для кода заполнения текущего узла и указывает одно из значений в пределах от 0 до 7. FlagX представляет собой информацию заполнения соседнего узла X. FlagX указывает 1, когда соседний узел X включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagY представляет собой информацию заполнения соседнего узла Y. FlagY указывает 1, когда соседний узел Y включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagZ представляет собой информацию заполнения соседнего узла Z. FlagZ указывает 1, когда соседний узел Z включает в себя облако точек (является занятым), и указывает 0, когда он не включает.
[0581] Следует отметить, что поскольку информация, указывающая то, является или нет соседний узел занятым, включается в код заполнения родительского узла, устройство кодирования трехмерных данных может выбирать таблицу кодирования с использованием значения, указываемого посредством кода заполнения родительского узла.
[0582] Из вышеописанного, устройство кодирования трехмерных данных может повышать эффективность кодирования посредством выбора таблицы кодирования с использованием информации, указывающей то, включает или нет соседний узел для текущего узла в себя облако точек.
[0583] Кроме того, как проиллюстрировано на фиг. 79, устройство кодирования трехмерных данных может выбирать соседний опорный узел согласно пространственной позиции текущего узла в родительском узле. Другими словами, устройство кодирования трехмерных данных может выбирать соседний узел, на который следует ссылаться из соседних узлов, согласно пространственной позиции текущего узла в родительском узле.
[0584] Далее описываются примеры конфигураций устройства кодирования трехмерных данных и устройства декодирования трехмерных данных. Фиг. 82 является блок-схемой устройства 2100 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2100 кодирования трехмерных данных, проиллюстрированное на фиг. 82, включает в себя формирователь 2101 деревьев октантов, модуль 2102 вычисления геометрической информации, модуль 2103 выбора таблиц кодирования и энтропийный кодер 2104.
[0585] Формирователь 2101 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует код заполнения для каждого узла, включенного в дерево октантов. Модуль 2102 вычисления геометрической информации получает информацию заполнения, указывающую то, является или нет соседний опорный узел для текущего узла занятым. Например, модуль 2102 вычисления геометрической информации получает информацию заполнения соседнего опорного узла из кода заполнения родительского узла, которому принадлежит текущий узел. Следует отметить, что, как проиллюстрировано на фиг. 79, модуль 2102 вычисления геометрической информации может выбирать соседний опорный узел согласно позиции текущего узла в родительском узле. Помимо этого, модуль 2102 вычисления геометрической информации не ссылается на информацию заполнения каждого узла в родительском соседнем узле.
[0586] Модуль 2103 выбора таблиц кодирования выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, с использованием информации заполнения соседнего опорного узла, вычисленной посредством модуля 2102 вычисления геометрической информации. Энтропийный кодер 2104 формирует поток битов посредством энтропийного кодирования кода заполнения с использованием выбранной таблицы кодирования. Следует отметить, что энтропийный кодер 2104 может присоединять, к потоку битов, информацию, указывающую выбранную таблицу кодирования.
[0587] Фиг. 83 является блок-схемой устройства 2110 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 2110 декодирования трехмерных данных, проиллюстрированное на фиг. 83, включает в себя формирователь 2111 деревьев октантов, модуль 2112 вычисления геометрической информации, модуль 2113 выбора таблиц кодирования и энтропийный декодер 2114.
[0588] Формирователь 2111 деревьев октантов формирует дерево октантов пространства (узлов) с использованием информации заголовка потока битов и т.д. Формирователь 2111 деревьев октантов формирует дерево октантов, например, посредством формирования большого пространства (корневого узла) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Узлы A0-A7 задаются в качестве текущего узла в последовательности.
[0589] Модуль 2112 вычисления геометрической информации получает информацию заполнения, указывающую то, является или нет соседний опорный узел для текущего узла занятым. Например, модуль 2112 вычисления геометрической информации получает информацию заполнения соседнего опорного узла из кода заполнения родительского узла, которому принадлежит текущий узел. Следует отметить, что, как проиллюстрировано на фиг. 79, модуль 2112 вычисления геометрической информации может выбирать соседний опорный узел согласно позиции текущего узла в родительском узле. Помимо этого, модуль 2112 вычисления геометрической информации не ссылается на информацию заполнения каждого узла в родительском соседнем узле.
[0590] Модуль 2113 выбора таблиц кодирования выбирает таблицу кодирования (таблицу декодирования), которая должна использоваться для энтропийного декодирования кода заполнения текущего узла, с использованием информации заполнения соседнего опорного узла, вычисленной посредством модуля 2112 вычисления геометрической информации. Энтропийный декодер 2114 формирует трехмерные точки посредством энтропийного декодирования кода заполнения с использованием выбранной таблицы кодирования. Следует отметить, что модуль 2113 выбора таблиц кодирования может получать, посредством выполнения декодирования, информацию выбранной таблицы кодирования, присоединенной к потоку битов, и энтропийный декодер 2114 может использовать таблицу кодирования, указываемую посредством полученной информации.
[0591] Каждый бит кода заполнения (8 битов), включенного в поток битов, указывает то, включает или нет соответствующее одно из восьми небольших пространств A (узлов A0-A7) в себя облако точек. Кроме того, устройство декодирования трехмерных данных формирует дерево октантов посредством разделения узла A0 небольшого пространства на восемь небольших пространств B (узлов B0-B7) и получает информацию, указывающую то, включает или нет каждый узел небольшого пространства B в себя облако точек, посредством декодирования кода заполнения. Таким образом, устройство декодирования трехмерных данных декодирует код заполнения каждого узла при формировании дерева октантов посредством разделения большого пространства на небольшие пространства.
[0592] Далее описываются процедуры для процессов, выполняемых посредством устройства кодирования трехмерных данных и устройства декодирования трехмерных данных. Фиг. 84 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных в устройстве кодирования трехмерных данных. Во-первых, устройство кодирования трехмерных данных определяет (задает) пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S2101). Затем, устройство кодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2102). После этого устройство кодирования трехмерных данных формирует код заполнения для текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S2103).
[0593] После этого, устройство кодирования трехмерных данных вычисляет (получает) информацию заполнения соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S2104). Затем, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе вычисленной информации заполнения соседнего опорного узла для текущего узла (S2105). После этого устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2106).
[0594] В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения узла до тех пор, пока узел не может разделяться (S2107). Другими словами, этапы S2102-S2106 рекурсивно повторяются.
[0595] Фиг. 85 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных в устройстве декодирования трехмерных данных. Во-первых, устройство декодирования трехмерных данных определяет (задает) пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S2111). Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S2112). После этого устройство декодирования трехмерных данных вычисляет (получает) информацию заполнения соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S2113).
[0596] После этого, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе информации заполнения соседнего опорного узла (S2114). Затем, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S2115).
[0597] В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения узла до тех пор, пока узел не может разделяться (S2116). Другими словами, этапы S2112-S2115 рекурсивно повторяются.
[0598] Далее описывается пример выбора таблицы кодирования. Фиг. 86 является схемой, иллюстрирующей пример выбора таблицы кодирования. Например, аналогично таблице 0 кодирования, показанной на фиг. 86, идентичный контекстный режим может применяться к кодам заполнения. Кроме того, другая контекстная модель может назначаться каждому коду заполнения. Поскольку это обеспечивает возможность назначения контекстной модели в соответствии с вероятностью появления кода заполнения, можно повышать эффективность кодирования. Кроме того, может использоваться контекстный режим, который обновляет таблицу вероятностей в соответствии с частотой возникновения кода заполнения. Альтернативно, может использоваться контекстная модель, имеющая фиксированную таблицу вероятностей.
[0599] Следует отметить, что хотя таблицы кодирования, проиллюстрированные на фиг. 60 и фиг. 61, используются в примере, показанном на фиг. 86, вместо этого могут использоваться таблицы кодирования, проиллюстрированные на фиг. 63 и фиг. 64.
[0600] В дальнейшем в этом документе описывается варьирование 1 настоящего варианта осуществления. Фиг. 87 является схемой, иллюстрирующей опорную взаимосвязь в настоящем варьировании. Хотя устройство кодирования трехмерных данных не ссылается на код заполнения родительского соседнего узла в вышеописанном варианте осуществления, устройство кодирования трехмерных данных может переключать то, следует или нет ссылаться на код заполнения родительского соседнего узла, согласно конкретному условию.
[0601] Например, когда устройство кодирования трехмерных данных кодирует дерево октантов при сканировании дерева октантов в ширину, устройство кодирования трехмерных данных кодирует код заполнения текущего узла со ссылкой на информацию заполнения узла в родительском соседнем узле. Напротив, когда устройство кодирования трехмерных данных кодирует дерево октантов при сканировании дерева октантов в глубину, устройство кодирования трехмерных данных запрещает ссылку на информацию заполнения узла в родительском соседнем узле. Посредством соответствующего выбора допускающего ссылку узла согласно порядку сканирования (порядку кодирования) узлов дерева октантов вышеуказанным способом, можно повышать эффективность кодирования и снижать нагрузку по обработке.
[0602] Следует отметить, что устройство кодирования трехмерных данных может присоединять, к заголовку потока битов, информацию, указывающую например, то, кодируется дерево октантов в ширину или в глубину. Фиг. 88 является схемой, иллюстрирующей пример синтаксиса информации заголовка в этом случае; octree_scan_order, показанный на фиг. 88, представляет собой информацию порядка кодирования (флаг порядка кодирования), указывающую порядок кодирования для дерева октантов. Например, когда octree_scan_order равен 0, указывается "в ширину", а когда octree_scan_order равен 1, указывается "в глубину". Поскольку это обеспечивает возможность устройству декодирования трехмерных данных определять то, кодирован либо нет поток битов в ширину или в глубину, со ссылкой на octree_scan_order, устройство декодирования трехмерных данных может надлежащим образом декодировать поток битов
[0603] Кроме того, устройство кодирования трехмерных данных может присоединять, к информации заголовка потока битов, информацию, указывающую то, следует или нет запрещать ссылку на родительский соседний узел. Фиг. 89 является схемой, иллюстрирующей пример синтаксиса информации заголовка в этом случае; limit_refer_flag представляет собой информацию переключения запрета (флаг переключения запрета), указывающую то, следует или нет запрещать ссылку на родительский соседний узел. Например, когда limit_refer_flag равен 1, запрет ссылки на родительский соседний узел указывается, а когда limit_refer_flag равен 0, ограничение по ссылке (разрешение ссылки на родительский соседний узел) не указывается.
[0604] Другими словами, устройство кодирования трехмерных данных определяет то, следует или нет запрещать ссылку на родительский соседний узел, и выбирает то, следует запрещать или разрешать ссылку на родительский соседний узел, на основе результата вышеуказанного определения. Помимо этого, устройство кодирования трехмерных данных формирует поток битов, включающий в себя информацию переключения запрета, которая указывает результат определения и указывает то, следует или нет запрещать ссылку на родительский соседний узел.
[0605] Устройство декодирования трехмерных данных получает, из потока битов, информацию переключения запрета, указывающую то, следует или нет запрещать ссылку на родительский соседний узел, и выбирает то, следует запрещать или разрешать ссылку на родительский соседний узел, на основе информации переключения запрета.
[0606] Это обеспечивает возможность устройству кодирования трехмерных данных управлять ссылкой на родительский соседний узел и формировать поток битов. Это также обеспечивает возможность устройству декодирования трехмерных данных получать, из заголовка потока битов, информацию, указывающую то, следует или нет запрещать ссылку на родительский соседний узел.
[0607] Хотя процесс кодирования кода заполнения описывается в качестве примера процесса кодирования, в котором ссылка на родительский соседний узел запрещается в настоящем варианте осуществления, настоящее раскрытие не обязательно ограничивается этим. Например, идентичный способ может применяться, когда кодируется другая информация узла дерева октантов. Например, способ настоящего варианта осуществления может применяться, когда кодируется другая информация атрибутов, такая как цвет, нормальный вектор или степень отражения, добавляемая в узел. Дополнительно, идентичный способ может применяться, когда кодируется таблица кодирования или прогнозированное значение.
[0608] В дальнейшем в этом документе описывается варьирование 2 настоящего варианта осуществления. В вышеприведенном описании, как проиллюстрировано на фиг. 79, приводится пример, в котором используются три опорных соседних узла, но могут использоваться четыре или более опорных соседних узла. Фиг. 90 является схемой, иллюстрирующей пример текущего узла и соседних опорных узлов.
[0609] Например, устройство кодирования трехмерных данных вычисляет таблицу кодирования, которая должна использоваться, когда устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла, показанного на фиг. 90, с использованием следующего уравнения.
[0610] CodingTable = (FlagX0<<3)+(FlagX1<<2)+(FlagY<<1)+(FlagZ)
[0611] Здесь, CodingTable указывает таблицу кодирования для кода заполнения текущего узла и указывает одно из значений в пределах от 0 до 15. FlagXN представляет собой информацию заполнения соседнего узла XN (N=0...1). FlaxXN указывает 1, когда соседний узел XN включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagY представляет собой информацию заполнения соседнего узла Y. FlagY указывает 1, когда соседний узел Y включает в себя облако точек (является занятым), и указывает 0, когда он не включает. FlagZ представляет собой информацию заполнения соседнего узла Z. FlagZ указывает 1, когда соседний узел Z включает в себя облако точек (является занятым), и указывает 0, когда он не включает.
[0612] В это время, когда соседний узел, например, соседний узел X0 на фиг. 90, является недопускающим ссылку (на него запрещена ссылка), устройство кодирования трехмерных данных может использовать, в качестве заменяющего значения, фиксированное значение, к примеру, 1 (занятый) или 0 (незанятый).
[0613] Фиг. 91 является схемой, иллюстрирующей пример текущего узла и соседних опорных узлов. Как проиллюстрировано на фиг. 91, когда соседний узел является недопускающим ссылку (на него запрещена ссылка), информация заполнения соседнего узла может вычисляться со ссылкой на код заполнения прародительского узла для текущего узла. Например, устройство кодирования трехмерных данных может вычислять FlagX0 в вышеприведенном уравнении с использованием информации заполнения соседнего узла G0 вместо соседнего узла X0, проиллюстрированного на фиг. 91, и может определять значение таблицы кодирования с использованием вычисленного FlagX0. Следует отметить, что соседний узел G0, проиллюстрированный на фиг. 91 представляет собой соседний узел, заполнение или незаполнение которого может определяться с использованием кода заполнения прародительского узла. Соседний узел X1 представляет собой соседний узел, заполнение или незаполнение которого может определяться с использованием кода заполнения родительского узла.
[0614] В дальнейшем в этом документе описывается варьирование 3 настоящего варианта осуществления. Фиг. 92 и фиг. 93 являются схемой, иллюстрирующей опорную взаимосвязь согласно настоящему варьированию. В частности, фиг. 92 является схемой, иллюстрирующей опорную взаимосвязь в структуре в виде дерева октантов, и фиг. 93 является схемой, иллюстрирующей опорную взаимосвязь в пространственной области.
[0615] В настоящем варьировании, когда устройство кодирования трехмерных данных кодирует информацию кодирования текущего узла, который должен кодироваться (в дальнейшем называемого "текущим узлом 2), устройство кодирования трехмерных данных ссылается на информацию кодирования каждого узла в родительском узле, которому принадлежит текущий узел 2. Другими словами, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) дочернего узла относительно первого узла, из числа соседних узлов, который имеет родительский узел, идентичный родительскому узлу для текущего узла. Например, когда устройство кодирования трехмерных данных кодирует код заполнения текущего узла 2, проиллюстрированного на фиг. 92, устройство кодирования трехмерных данных ссылается на код заполнения узла в родительском узле, которому принадлежит текущий узел 2, например, текущий узел, проиллюстрированный на фиг. 92. Как проиллюстрировано на фиг. 93, код заполнения текущего узла, проиллюстрированного на фиг. 92, указывает, например, то, является или нет занятым каждый узел в текущем узле, соседнем с текущим узлом 2. Соответственно, поскольку устройство кодирования трехмерных данных может выбирать таблицу кодирования для кода заполнения текущего узла 2 в соответствии с более конкретной формой текущего узла, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0616] Устройство кодирования трехмерных данных может вычислять таблицу кодирования, которая должна использоваться, когда устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла 2, например, с использованием следующего уравнения.
[0617] CodingTable = (FlagX1<<5)+(FlagX2<<4)+(FlagX3<<3)+(FlagX4<<2)+(FlagY<<1)+(FlagZ)
[0618] Здесь, 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, когда он не включает.
[0619] Следует отметить, что устройство кодирования трехмерных данных может изменять способ вычисления таблицы кодирования, согласно позиции узла для текущего узла 2 в родительском узле.
[0620] Когда ссылка на родительский соседний узел не запрещается, устройство кодирования трехмерных данных может ссылаться на информацию кодирования каждого узла в родительском соседнем узле. Например, когда ссылка на родительский соседний узел не запрещается, ссылка на информацию (например, информацию заполнения) дочернего узла третьего узла имеет родительский узел, отличный от родительского узла для текущего узла. В примере, проиллюстрированном на фиг. 91, например, устройство кодирования трехмерных данных получает информацию заполнения дочернего узла относительно соседнего узла X0 со ссылкой на код заполнения соседнего узла X0, имеющего родительский узел, отличный от родительского узла для текущего узла. Устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, на основе полученной информации заполнения дочернего узла относительно соседнего узла X0.
[0621] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления кодирует информацию (например, код заполнения) текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, где N является целым числом, большим или равным 2. Как проиллюстрировано на фиг. 77 и фиг. 78, при кодировании, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, и запрещает ссылку на информацию второго узла, включенного в соседние узлы, причем первый узел имеет родительский узел, идентичный родительскому узлу для текущего узла, причем второй узел имеет родительский узел, отличный от родительского узла для текущего узла. Иначе говоря, при кодировании, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, код заполнения) родительского узла и запрещает ссылку на информацию (например, код заполнения) другого узла (родительского соседнего узла) в слое, идентичном слою родительского узла.
[0622] Вследствие этого, устройство кодирования трехмерных данных может повышать эффективность кодирования со ссылкой на информацию первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, причем первый узел имеет родительский узел, идентичный родительскому узлу для текущего узла. Кроме того, устройство кодирования трехмерных данных может уменьшать объем обработки посредством отсутствия ссылки на информацию второго узла, включенного в соседние узлы, причем второй узел имеет родительский узел, отличный от родительского узла для текущего узла. Таким образом, устройство кодирования трехмерных данных может не только повышать эффективность кодирования, но также и уменьшать объем обработки.
[0623] Например, устройство кодирования трехмерных данных дополнительно определяет то, следует или нет запрещать ссылку на информацию второго узла. При кодировании, устройство кодирования трехмерных данных выбирает то, следует запрещать или разрешать ссылку на информацию второго узла, на основе результата определения. Кроме того, устройство кодирования трехмерных данных формирует поток битов, включающий в себя информацию переключения запрета (например, limit_refer_flag, показанный на фиг. 89), которая указывает результат определения и указывает то, следует или нет запрещать ссылку на информацию второго узла.
[0624] Вследствие этого, устройство кодирования трехмерных данных может выбирать то, следует или нет запрещать ссылку на информацию второго узла. Помимо этого, устройство декодирования трехмерных данных может надлежащим образом выполнять процесс декодирования с использованием информации переключения запрета.
[0625] Например, информация текущего узла представляет собой информацию (например, код заполнения), которая указывает то, присутствует или нет трехмерная точка в каждом из дочерних узлов, принадлежащих текущему узлу. Информация первого узла представляет собой информацию (информацию заполнения первого узла), которая указывает то, присутствует или нет трехмерная точка в первом узле. Информация второго узла представляет собой информацию (информацию заполнения второго узла), которая указывает то, присутствует или нет трехмерная точка во втором узле.
[0626] Например, при кодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования на основе того, присутствует или нет трехмерная точка в первом узле, и энтропийно кодирует информацию (например, код заполнения) текущего узла с использованием выбранной таблицы кодирования.
[0627] Например, как проиллюстрировано на фиг. 92 и фиг. 93, при кодировании, устройство кодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) дочернего узла относительно первого узла, причем дочерний узел включается в соседние узлы.
[0628] Вследствие этого, поскольку устройство кодирования трехмерных данных предоставляет ссылку на более подробную информацию соседнего узла, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0629] Например, как проиллюстрировано на фиг. 79, при кодировании, устройство кодирования трехмерных данных выбирает соседний узел, на который следует ссылаться из соседних узлов, согласно пространственной позиции текущего узла в родительском узле.
[0630] Вследствие этого, устройство кодирования трехмерных данных может ссылаться на соответствующий соседний узел согласно пространственной позиции текущего узла в родительском узле.
[0631] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0632] Устройство декодирования трехмерных данных согласно настоящему варианту осуществления декодирует информацию (например, код заполнения) текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, где N является целым числом, большим или равным 2. Как проиллюстрировано на фиг. 77 и фиг. 78, при декодировании, устройство декодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, и запрещает ссылку на информацию второго узла, включенного в соседние узлы, причем первый узел имеет родительский узел, идентичный родительскому узлу для текущего узла, причем второй узел имеет родительский узел, отличный от родительского узла для текущего узла. Иначе говоря, при декодировании, устройство декодирования трехмерных данных разрешает ссылку на информацию (например, код заполнения) родительского узла и запрещает ссылку на информацию (например, код заполнения) другого узла (родительского соседнего узла) в слое, идентичном слою родительского узла.
[0633] Вследствие этого, устройство декодирования трехмерных данных может повышать эффективность кодирования со ссылкой на информацию первого узла, включенного в соседние узлы, пространственно соседние с текущим узлом, причем первый узел имеет родительский узел, идентичный родительскому узлу для текущего узла. Кроме того, устройство декодирования трехмерных данных может уменьшать объем обработки посредством отсутствия ссылки на информацию второго узла, включенного в соседние узлы, причем второй узел имеет родительский узел, отличный от родительского узла для текущего узла. Таким образом, устройство декодирования трехмерных данных может не только повышать эффективность кодирования, но также и уменьшать объем обработки.
[0634] Например, устройство декодирования трехмерных данных дополнительно получает, из потока битов, информацию переключения запрета (например, limit_refer_flag, показанный на фиг. 89), указывающую то, следует или нет запрещать ссылку на информацию второго узла. При декодировании, устройство декодирования трехмерных данных выбирает то, следует запрещать или разрешать ссылку на информацию второго узла, на основе информации переключения запрета.
[0635] Вследствие этого, устройство декодирования трехмерных данных может надлежащим образом выполнять процесс декодирования с использованием информации переключения запрета.
[0636] Например, информация текущего узла представляет собой информацию (например, код заполнения), которая указывает то, присутствует или нет трехмерная точка в каждом из дочерних узлов, принадлежащих текущему узлу. Информация первого узла представляет собой информацию (информацию заполнения первого узла), которая указывает то, присутствует или нет трехмерная точка в первом узле. Информация второго узла представляет собой информацию (информацию заполнения второго узла), которая указывает то, присутствует или нет трехмерная точка во втором узле.
[0637] Например, при декодировании, устройство кодирования трехмерных данных выбирает таблицу кодирования на основе того, присутствует или нет трехмерная точка в первом узле, и энтропийно декодирует информацию (например, код заполнения) текущего узла с использованием выбранной таблицы кодирования.
[0638] Например, как проиллюстрировано на фиг. 92 и фиг. 93, при декодировании, устройство декодирования трехмерных данных разрешает ссылку на информацию (например, информацию заполнения) дочернего узла относительно первого узла, причем дочерний узел включается в соседние узлы.
[0639] Вследствие этого, поскольку устройство декодирования трехмерных данных предоставляет ссылку на более подробную информацию соседнего узла, устройство декодирования трехмерных данных может повышать эффективность кодирования.
[0640] Например, как проиллюстрировано на фиг. 79, при декодировании, устройство декодирования трехмерных данных выбирает соседний узел, на который следует ссылаться из соседних узлов, согласно пространственной позиции текущего узла в родительском узле.
[0641] Вследствие этого, устройство декодирования трехмерных данных может ссылаться на соответствующий соседний узел согласно пространственной позиции текущего узла в родительском узле.
[0642] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0643] Вариант 10 осуществления
В дальнейшем описывается способ уменьшения числа таблиц кодирования в настоящем варианте осуществления.
[0644] Когда таблица кодирования предоставляется для каждой из комбинаций позиций (восьми шаблонов) текущего узла в родительском узле и шаблонов состояний заполнения (восьми шаблонов) трех соседних узлов для текущего узла, требуется 8*8=64 таблицы кодирования. Следует отметить, что комбинация также в дальнейшем упоминается как шаблон заполнения соседних узлов. Помимо этого, узел в состоянии заполнения также упоминается как занятый узел. Дополнительно, соседний узел в состоянии заполнения также упоминается как соседний занятый узел.
[0645] В настоящем варианте осуществления, общее число таблиц кодирования уменьшается посредством назначения идентичной таблицы кодирования аналогичным шаблонам заполнения соседних узлов. В частности, шаблоны заполнения соседних узлов группируются посредством выполнения процесса преобразования для шаблонов заполнения соседних узлов. Более конкретно, шаблоны заполнения соседних узлов, которые становятся идентичными вследствие процесса преобразования, группируются в идентичную группу. Помимо этого, одна таблица кодирования назначается каждой группе.
[0646] Например, как показано на фиг. 94, перемещение в пространстве вдоль оси X, оси Y или оси Z используется в качестве процесса преобразования. Альтернативно, как показано на фиг. 95, вращение вдоль оси X, оси Y или оси Z (вокруг оси X, оси Y или оси Z) используется.
[0647] Кроме того, сгруппированные шаблоны заполнения соседних узлов могут классифицироваться с использованием соблюдающего правила. Например, как показано на фиг. 96, правило может состоять в том, что поверхность, в которой присутствуют занятые узлы и текущий узел, является горизонтальной или вертикальной по отношению к координатной плоскости (плоскости X-Y, плоскости Y-Z или плоскости X-Z). Альтернативно, как показано на фиг. 97, правило может состоять в том, что смежная поверхность задается посредством направлений, в которых соседние занятые узлы присутствуют для текущего узла.
[0648] Фиг. 98 является схемой, иллюстрирующей пример перемещения в пространстве вдоль каждой из оси X, оси Y и оси Z. Фиг. 99 является схемой, иллюстрирующей примеры вращения вдоль оси X. Фиг. 100 является схемой, иллюстрирующей примеры вращения вдоль оси Y. Фиг. 101 является схемой, иллюстрирующей примеры вращения вдоль оси Z. Фиг. 102 является схемой, иллюстрирующей примеры горизонтальности и вертикальности по отношению к координатной плоскости. Фиг. 103 является схемой, иллюстрирующей примеры шаблона смежной поверхности.
[0649] Фиг. 104 является схемой, иллюстрирующей пример разделения 64 шаблонов заполнения соседних узлов на 6 групп. Другими словами, шесть таблиц кодирования используются в этом примере. Кроме того, число таблиц кодирования уменьшается посредством вращения вдоль оси Z в примере.
[0650] В частности, как показано на фиг. 104, шаблон заполнения соседних узлов, который включает в себя нуль соседних занятых узлов из числа трех соседних узлов (т.е. номер заполнения равен нулю), классифицируется в группу 0. Шаблон заполнения соседних узлов, который включает в себя один соседний занятый узел из числа трех соседних узлов (т.е. номер заполнения равен одному) и является горизонтальным по отношению к плоскости X-Y, классифицируется в группу 1. Шаблон заполнения соседних узлов, который включает в себя один соседний занятый узел из числа трех соседних узлов (т.е. номер заполнения равен одному) и является вертикальным по отношению к плоскости X-Y, классифицируется в группу 2. Шаблон заполнения соседних узлов, который включает в себя два соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен двум) и является вертикальным по отношению к плоскости X-Y, классифицируется в группу 3. Шаблон заполнения соседних узлов, который включает в себя два соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен двум) и является горизонтальным по отношению к плоскости X-Y, классифицируется в группу 4. Шаблон заполнения соседних узлов, который включает в себя три соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен трем), классифицируется в группу 5.
[0651] Кроме того, одна таблица кодирования используется для каждой из групп. Кроме того, каждая группа включает в себя шаблоны заполнения соседних узлов, которые становятся идентичными вследствие вращения вдоль оси Z. Следует отметить, что относительно группы 4, перемещение в пространстве вдоль оси Z также рассматривается.
[0652] Например, в случае трехмерной карты, имеющей плоскость X-Y в качестве земной поверхности, здания, аналогичные по форме, зачастую присутствуют на плоскости X-Y. В таком случае, например, когда здание A вращается в направлении по оси Z, здание A с большой вероятностью должно перекрывать здание B. В этом случае, имеется вероятность повышения эффективности кодирования, когда здание B кодируется, посредством использования, когда код заполнения здания B кодируется, таблицы кодирования для кода заполнения, обновленного посредством кодирования здания A. Поскольку, при рассмотрении таблиц кодирования, полученных посредством вращения форм в направлении по оси Z, как принадлежащих идентичной группе, можно обновлять таблицы кодирования без эффекта вращения в направлении по оси Z, можно повышать эффективность кодирования. Кроме того, например, когда здание C перемещается в пространстве на плоскости X-Y, здание C с большой вероятностью должно перекрывать здание D. В этом случае, имеется вероятность повышения эффективности кодирования, когда здание D кодируется, посредством использования, когда код заполнения здания D кодируется, таблицы кодирования для кода заполнения, обновленного посредством кодирования здания C. Поскольку, при рассмотрении таблиц кодирования, связанных с перемещением в пространстве на плоскости X-Y, как принадлежащих идентичной группе, можно обновлять таблицы кодирования без эффекта перемещения в пространстве на плоскости X-Y, можно повышать эффективность кодирования.
[0653] Фиг. 105 является схемой, иллюстрирующей пример разделения 64 шаблонов заполнения соседних узлов на 8 групп. Другими словами, восемь таблиц кодирования используются в этом примере. Кроме того, число таблиц кодирования уменьшается посредством вращения вдоль оси Z и с использованием смежных поверхностей в примере.
[0654] В частности, как показано на фиг. 105, шаблон заполнения соседних узлов, который включает в себя нуль соседних занятых узлов из числа трех соседних узлов (т.е. номер заполнения равен нулю), классифицируется в группу 0. Шаблон заполнения соседних узлов, который включает в себя один соседний занятый узел из числа трех соседних узлов (т.е. номер заполнения равен одному) и является горизонтальным по отношению к плоскости X-Y, классифицируется в группу 1. Шаблон заполнения соседних узлов, который включает в себя один соседний занятый узел из числа трех соседних узлов (т.е. номер заполнения равен одному) и является вертикальным по отношению к плоскости X-Y, классифицируется в группу 2. Шаблон заполнения соседних узлов, который включает в себя два соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен двум), является вертикальным по отношению к плоскости X-Y и включает в себя смежную поверхность в направлении по оси Z (т.е. соседние занятые узлы текущего узла присутствуют в направлении по оси Z), классифицируется в группу 3. Шаблон заполнения соседних узлов, который включает в себя два соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен двум), является вертикальным по отношению к плоскости X-Y и включает в себя смежную поверхность в направлении по оси -Z (т.е. соседние занятые узлы текущего узла присутствуют в направлении по оси -Z), классифицируется в группу 4.
[0655] Шаблон заполнения соседних узлов, который включает в себя два соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен двум) и является горизонтальным по отношению к плоскости X-Y, классифицируется в группу 5. Шаблон заполнения соседних узлов, который включает в себя три соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен трем) и включает в себя смежную поверхность в направлении по оси Z, классифицируется в группу 6. Шаблон заполнения соседних узлов, который включает в себя три соседних занятых узла из числа трех соседних узлов (т.е. номер заполнения равен трем) и включает в себя смежную поверхность в направлении по оси -Z, классифицируется в группу 7.
[0656] Кроме того, одна таблица кодирования используется для каждой из групп. Кроме того, каждая группа включает в себя шаблоны заполнения соседних узлов, которые становятся идентичными вследствие вращения вдоль оси Z. Следует отметить, что относительно группы 5, перемещение в пространстве вдоль оси Z также рассматривается.
[0657] Правило преобразования может создаваться с использованием каждого из примеров, показанных на фиг. 104 и фиг. 105. Фиг. 106 является схемой, иллюстрирующей пример правила преобразования (таблицы преобразования), когда 3 таблицы кодирования используются для 64 шаблонов заполнения соседних узлов. В примере, показанном на фиг. 106, один из индексов (таблицы 0-2) 3 таблиц кодирования назначается каждому из 64 шаблонов заполнения соседних узлов (шаблонов 0-63). Это правило представляется, например, посредством таблицы поиска (LUT).
[0658] Кроме того, правило преобразования может создаваться посредством добавления нового правила в данное правило преобразования или удаления части правила. Другими словами, шаблоны заполнения соседних узлов, сгруппированные согласно первому правилу, дополнительно могут группироваться согласно второму правилу. Иначе говоря, шаблоны заполнения соседних узлов могут назначаться первым таблицам кодирования с использованием первой таблицы преобразования, первые таблицы кодирования могут назначаться вторым таблицам кодирования с использованием второй таблицы преобразования, и арифметическое кодирование или арифметическое декодирование может выполняться с использованием вторых таблиц кодирования. Например, классификация, показанная на фиг. 104, может выполняться посредством дополнительного комбинирования некоторых классифицированных групп после того, как классификация, показанная на фиг. 105, выполняется.
[0659] Фиг. 107 является схемой, иллюстрирующей пример таблицы преобразования для выполнения такой классификации. Индекс 1 таблицы кодирования, показанный на фиг. 107, указывает индекс таблицы кодирования, извлекаемой согласно данному правилу преобразования, и индекс 2 таблицы кодирования, показанный на фиг. 107, указывает индекс таблицы кодирования, представляющей новое правило преобразования.
[0660] Например, индекс 1 таблицы кодирования указывает один из индексов (таблицы 0-7) восьми таблиц кодирования, которые представляют собой индексы таблиц кодирования, полученные посредством классификации, показанной на фиг. 105. Помимо этого, индекс 2 таблицы кодирования указывает один из индексов (таблицы 0-5) шести таблиц кодирования, соответствующих классификации, показанной на фиг. 104.
[0661] В частности, поскольку группа 4 и группа 5, показанные на фиг. 105, соответствуют группе 4, показанной на фиг. 104, как показано на фиг. 107, таблица 4 и таблица 5, указываемые посредством индекса 1 таблицы кодирования, назначаются таблице 4, указываемой посредством индекса 2 таблицы кодирования. Аналогично, таблица 6 и таблица 7, указываемые посредством индекса 1 таблицы кодирования, назначаются таблице 5, указываемой посредством индекса 2 таблицы кодирования.
[0662] Далее описывается краткое представление процесса преобразования. Правило преобразования используется для того, чтобы идентифицировать уникальный индекс таблицы кодирования.
[0663] Фиг. 108 является схемой, иллюстрирующей краткое представление процесса преобразования для определения индекса таблицы кодирования из 64 шаблонов заполнения соседних узлов. Как показано на фиг. 108, шаблон заполнения соседних узлов, включающий в себя позицию текущего узла, вводится в правило преобразования, и табличный индекс (индекс таблицы кодирования) выводится. Число шаблонов уменьшается посредством правила преобразования. Например, правило преобразования, показанное на фиг. 106, используется в качестве правила преобразования. Как показано на фиг. 106, идентичный табличный индекс назначается различным шаблонам заполнения соседних узлов.
[0664] После этого энтропийное кодирование выполняется с использованием таблицы кодирования, которой назначается полученный табличный индекс.
[0665] Фиг. 109 является схемой, иллюстрирующей краткое представление процесса преобразования, когда предоставляется табличный индекс. Как показано на фиг. 109, табличный индекс 1 вводится в правило преобразования, и табличный индекс 2 выводится. Число шаблонов уменьшается посредством правила преобразования. Например, правило преобразования, показанное на фиг. 107, используется в качестве правила преобразования. Как показано на фиг. 107, идентичный табличный индекс 2 назначается различным табличным индексам 1.
[0666] После этого энтропийное кодирование выполняется с использованием таблицы кодирования, которой назначается полученный табличный индекс 2.
[0667] Далее описываются конфигурации устройства кодирования трехмерных данных и устройства декодирования трехмерных данных согласно настоящему варианту осуществления. Фиг. 110 является блок-схемой устройства 3600 кодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 3600 кодирования трехмерных данных, показанное на фиг. 110, включает в себя формирователь 3601 деревьев октантов, модуль 3602 вычисления геометрической информации, формирователь 3603 индексов, модуль 3604 выбора таблиц кодирования и энтропийный кодер 3605.
[0668] Формирователь 3601 деревьев октантов формирует, например, дерево октантов из введенных трехмерных точек (облака точек) и формирует код заполнения каждого узла, включенного в дерево октантов. Модуль 3602 вычисления геометрической информации получает информацию заполнения, указывающую то, является или нет соседний опорный узел для текущего узла занятым. Например, модуль 3602 вычисления геометрической информации вычисляет информацию заполнения соседнего опорного узла из кода заполнения родительского узла, которому принадлежит текущий узел. Следует отметить, что модуль 3602 вычисления геометрической информации может изменять соседний опорный узел согласно позиции текущего узла в родительском узле. Помимо этого, модуль 3602 вычисления геометрической информации не должен обязательно ссылаться на информацию заполнения каждого узла в соседнем родительском узле.
[0669] Формирователь 3603 индексов формирует индекс таблицы кодирования с использованием информации соседних узлов (например, шаблона заполнения соседних узлов).
[0670] Модуль 3604 выбора таблиц кодирования выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования кода заполнения текущего узла, с использованием индекса таблицы кодирования, сформированного посредством формирователя 3603 индексов.
[0671] Код заполнения кодируется как десятичное число или двоичное число. Например, когда двоичное кодирование используется, индекс таблицы кодирования, сформированный посредством формирователя 3603 индексов, используется при выборе двоичного контекста, который должен использоваться для энтропийного кодирования посредством энтропийного кодера 3605. Кроме того, когда десятичное число или M-арное кодирование используется, M-арный контекст выбирается с использованием индекса таблицы кодирования.
[0672] Энтропийный кодер 3605 формирует поток битов посредством энтропийного кодирования кода заполнения с использованием выбранной таблицы кодирования. Помимо этого, энтропийный кодер 3605 может присоединять информацию, указывающую выбранную таблицу кодирования, к потоку битов.
[0673] Фиг. 111 является блок-схемой устройства 3610 декодирования трехмерных данных согласно настоящему варианту осуществления. Устройство 3610 декодирования трехмерных данных, показанное на фиг. 111, включает в себя формирователь 3611 деревьев октантов, модуль 3612 вычисления геометрической информации, формирователь 3613 индексов, модуль 3614 выбора таблиц кодирования и энтропийный декодер 3615.
[0674] Формирователь 3611 деревьев октантов формирует дерево октантов пространства (узлов) с использованием, например, информации заголовка потока битов. Например, формирователь 3611 деревьев октантов формирует большое пространство (корневой узел) с использованием размера пространства вдоль направлений по оси X, по оси Z и по оси Y, присоединенных к информации заголовка, и формирует дерево октантов посредством формирования восьми небольших пространств A (узлов A0-A7) посредством разделения пространства на два вдоль каждого из направлений по оси X, по оси Z и по оси Y. Помимо этого, узлы A0-A7 задаются в качестве текущего узла в последовательности.
[0675] Модуль 3612 вычисления геометрической информации получает информацию заполнения, указывающую то, является или нет соседний опорный узел для текущего узла занятым. Например, модуль 3612 вычисления геометрической информации вычисляет информацию заполнения соседнего опорного узла из кода заполнения родительского узла, которому принадлежит текущий узел. Следует отметить, что модуль 3612 вычисления геометрической информации может изменять соседний опорный узел согласно позиции текущего узла в родительском узле. Помимо этого, модуль 3612 вычисления геометрической информации не должен обязательно ссылаться на информацию заполнения каждого узла в соседнем родительском узле.
[0676] Формирователь 3613 индексов формирует индекс таблицы кодирования с использованием информации соседних узлов (например, шаблона заполнения соседних узлов).
[0677] Модуль 3614 выбора таблиц кодирования выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования кода заполнения текущего узла, с использованием индекса таблицы кодирования, сформированного посредством формирователя 3613 индексов.
[0678] Код заполнения декодируется в качестве десятичного числа или двоичного числа. Например, когда двоичное кодирование используется, индекс таблицы кодирования, преобразованный в предыдущем блоке, используется при выборе двоичного контекста, который должен использоваться для энтропийного декодирования следующего блока. Кроме того, когда десятичное число или M-арное кодирование используется, M-арный контекст выбирается с использованием индекса таблицы кодирования.
[0679] Энтропийный декодер 3615 формирует трехмерные точки (облако точек) посредством энтропийного декодирования кода заполнения с использованием выбранной таблицы кодирования. Следует отметить, что энтропийный декодер 3615 может получать информацию выбранной таблицы кодирования, присоединенную к потоку битов, посредством выполнения декодирования, и использовать таблицу кодирования, указываемую посредством полученной информации.
[0680] Каждый бит кода заполнения (8 битов), включенных в поток битов, указывает то, включает или нет соответствующее одно из восьми небольших пространств A (узлов A0-A7) в себя облако точек. Устройство декодирования трехмерных данных дополнительно формирует дерево октантов посредством разделения узла A0 небольшого пространства на восемь небольших пространств B (узлов B0-B7) и получает информацию, указывающую то, включает или нет каждый узел небольших пространств B в себя облако точек, посредством декодирования кода заполнения. Как указано выше, устройство декодирования трехмерных данных декодирует код заполнения каждого узла при формировании дерева октантов посредством разделения большого пространства на небольшие пространства.
[0681] Далее описывается последовательность операций обработки, выполняемой устройства кодирования трехмерных данных и устройства декодирования трехмерных данных. Фиг. 112 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных в устройстве кодирования трехмерных данных. Во-первых, устройство кодирования трехмерных данных задает пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S3601). Затем, устройство кодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S3602). После этого устройство кодирования трехмерных данных формирует код заполнения текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S3603).
[0682] После этого, устройство кодирования трехмерных данных вычисляет (получает) информацию заполнения (шаблон заполнения соседних узлов) соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S3604).
[0683] Затем, устройство кодирования трехмерных данных преобразует шаблон заполнения соседних узлов в индекс таблицы кодирования (S3605). После этого устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе индекса (S3606).
[0684] После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S3607).
[0685] В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S3608). Другими словами, этапы S3602-S3607 рекурсивно повторяются.
[0686] Фиг. 113 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных в устройстве декодирования трехмерных данных. Во-первых, устройство декодирования трехмерных данных задает пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S3611). Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S3612). После этого устройство декодирования трехмерных данных вычисляет (получает) информацию заполнения (шаблон заполнения соседних узлов) соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S3613).
[0687] После этого, устройство декодирования трехмерных данных преобразует шаблон заполнения соседних узлов в индекс таблицы кодирования (S3614). Затем, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе индекса (S3615). После этого устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S3616).
[0688] В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S3617). Другими словами, этапы S3612-S3616 рекурсивно повторяются.
[0689] Далее описываются режимы кодирования. В режиме 1, ссылаются на код заполнения родительского узла, выполняют поиск соседних узлов относительно родительского узла, и получается шаблон n заполнения соседних узлов. Индекс i1=f(n) таблицы кодирования получается с использованием правила f преобразования.
[0690] В режиме 2, ссылаются на код c заполнения родительского узла. Индекс i2=g(c) таблицы кодирования получается с использованием правила g преобразования.
[0691] В режиме 3, ссылаются на код c заполнения родительского узла. Индекс i3=h(c) таблицы кодирования получается с использованием правила h преобразования.
[0692] В режиме 1, два фрагмента информации из двух источников используются в качестве информации заполнения соседних узлов. Первая информация представляет собой информацию заполнения соседнего узла в родительском узле, полученную из кода заполнения родительского узла. Вторая информация представляет собой информацию заполнения соседнего узла за пределами родительского узла и получается посредством выполнения поиска соседних узлов относительно родительского узла. Другими словами, эта информация представляет собой информацию заполнения, из числа соседних узлов для текущего узла, соседнего узла, принадлежащего родительскому узлу, отличающемуся от родительского узла для текущего узла. В дальнейшем в этом документе, этот процесс выполнения поиска соседних узлов относительно родительского узла также упоминается как поиск соседних узлов относительно родительского узла.
[0693] В режиме 2 и режиме 3, информация заполнения соседнего узла в родительском узле, полученная из кода заполнения родительского узла, используется, и информация заполнения соседнего узла за пределами родительского узла не используется. Кроме того, режим 2 и режим 3 отличаются по правилу преобразования для получения индекса таблицы кодирования.
[0694] Кроме того, для того, чтобы разрабатывать способы для уменьшения шаблонов заполнения соседних узлов, режимы, взаимно отличающиеся по правилу преобразования, могут добавляться. Например, правило преобразования получается посредством комбинирования правил, показанных на фиг. 94-103, и т.д.
[0695] Далее описываются примеры режима кодирования. В режиме 1 кодирования (CodingMode=1), 64 шаблона заполнения соседних узлов получаются посредством ссылки на код заполнения родительского узла и выполнения поиска соседних узлов относительно родительского узла. Здесь, 64 шаблона заполнения соседних узлов представляют собой комбинацию (26=64) фрагментов информации заполнения 6 соседних узлов, и позиция текущего узла не рассматривается. Помимо этого, таблица поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы десяти таблиц кодирования, используется.
[0696] В режиме 2 кодирования (CodingMode=2), 64 шаблона заполнения соседних узлов, для которых рассматривается позиция текущего узла, получаются посредством ссылки на код заполнения родительского узла. Здесь, 64 шаблона заполнения соседних узлов представляют собой комбинацию (8*8=64) позиций (8 шаблонов) текущего узла в родительском узле и фрагментов информации заполнения трех соседних узлов (23=8). Помимо этого, таблица поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 6 таблиц кодирования, используется.
[0697] В режиме 3 кодирования (CodingMode=3), 64 шаблона заполнения соседних узлов, для которых рассматривается позиция текущего узла, получаются посредством ссылки на код заполнения родительского узла. Помимо этого, таблица поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 8 таблиц кодирования, используется.
[0698] Кроме того, в качестве другого примера режима кодирования (CodingMode), например, устройство кодирования трехмерных данных присоединяет, к потоку битов, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла. Когда search_flag=1, устройство кодирования трехмерных данных может вычислять шаблон заполнения соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла, формировать индекс одной из N таблиц кодирования из значения шаблона заполнения соседних узлов и выполнять арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс.
[0699] Когда search_flag=0, устройство кодирования трехмерных данных может вычислять шаблон заполнения соседних узлов без выполнения поиска соседних узлов относительно родительского узла, формировать индекс одной из M таблиц кодирования из значения шаблона заполнения соседних узлов и выполнять арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс, при этом M является целым числом, меньшим или равным N. Можно управлять балансом между эффективностью кодирования и объемом обработки посредством выбора поиска соседних узлов относительно родительского узла и таблицы кодирования, которая должна использоваться, согласно значению search_flag вышеуказанным способом.
[0700] Далее описывается последовательность операций обработки, выполняемой посредством каждого из устройства кодирования трехмерных данных и устройства декодирования трехмерных данных, когда выбирается режим кодирования.
[0701] Фиг. 114 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных. Во-первых, устройство кодирования трехмерных данных задает пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S3621). Затем, устройство кодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S3622). После этого устройство кодирования трехмерных данных формирует код заполнения текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S3623).
[0702] После этого, устройство кодирования трехмерных данных вычисляет (получает) информацию заполнения (шаблон заполнения соседних узлов) соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S3624).
[0703] Затем, устройство кодирования трехмерных данных определяет то, представляет или нет режим кодирования собой предварительно определенный режим (S3625). Например, когда CodingMode=1, устройство кодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство кодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0704] Следует отметить, что, например, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, может использоваться вместо CodingMode. В этом случае, когда, например, search_flag=1, устройство кодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство кодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0705] Когда режим кодирования представляет собой предварительно определенный режим ("Да" на S3625), устройство кодирования трехмерных данных получает информацию заполнения (шаблоны заполнения оставшихся соседних узлов) оставшихся соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла для выполнения поиска всех кодированных дочерних узлов (S3626). После этого устройство кодирования трехмерных данных комбинирует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3624, и шаблоны заполнения оставшихся соседних узлов, вычисленные посредством поиска соседних узлов относительно родительского узла на этапе S3626 (S3627).
[0706] После этого, устройство кодирования трехмерных данных преобразует шаблон заполнения соседних узлов, полученный посредством комбинации, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 10 таблиц кодирования (S3628).
[0707] С другой стороны, когда режим кодирования не представляет собой предварительно определенный режим ("Нет" на S3625), устройство кодирования трехмерных данных преобразует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3624, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 6 таблиц кодирования (S3629).
[0708] Следует отметить, что хотя здесь приведен пример, в котором число таблиц кодирования изменяется между 10 и 6, число таблиц кодирования не всегда ограничивается этим. Например, устройство кодирования трехмерных данных может изменять число таблиц кодирования между N и M, при этом M является целым числом, меньшим или равным N.
[0709] Затем, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе индекса, полученного на этапе S3628 или S3629 (S3630). После этого, устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S3631).
[0710] Следует отметить, что устройство кодирования трехмерных данных может кодировать, в качестве информации заголовка, информацию (CodingMode), указывающую режим кодирования. Помимо этого, устройство кодирования трехмерных данных может присоединять, к потоку битов, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, вместо CodingMode.
[0711] В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S3632). Другими словами, этапы S3622-S3631 повторяются рекурсивно.
[0712] Фиг. 115 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных в устройстве декодирования трехмерных данных. Во-первых, устройство декодирования трехмерных данных задает пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S3641).
[0713] Следует отметить, что устройство декодирования трехмерных данных может декодировать информацию (CodingMode), указывающую режим кодирования, включенный в информацию заголовка. Помимо этого, устройство декодирования трехмерных данных может декодировать флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, вместо CodingMode.
[0714] Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S3642). После этого устройство декодирования трехмерных данных вычисляет (получает) информацию заполнения (шаблон заполнения соседних узлов) соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S3643).
[0715] После этого, устройство декодирования трехмерных данных определяет то, представляет или нет режим кодирования собой предварительно определенный режим (S3644). Например, когда CodingMode=1, устройство декодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство декодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0716] Следует отметить, что, например, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, может использоваться вместо CodingMode. В этом случае, когда, например, search_flag=1, устройство декодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство декодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0717] Когда режим кодирования представляет собой предварительно определенный режим ("Да" на S3644), устройство декодирования трехмерных данных получает информацию заполнения (шаблоны заполнения оставшихся соседних узлов) оставшихся соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла для выполнения поиска всех кодированных дочерних узлов (S3645). Затем, устройство декодирования трехмерных данных комбинирует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3643, и шаблоны заполнения оставшихся соседних узлов, вычисленные посредством поиска соседних узлов относительно родительского узла на этапе S3645 (S3646).
[0718] После этого устройство декодирования трехмерных данных преобразует шаблон заполнения соседних узлов, полученный посредством комбинации, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 10 таблиц кодирования (S3647).
[0719] С другой стороны, когда режим кодирования не представляет собой предварительно определенный режим ("Нет" на S3644), устройство декодирования трехмерных данных преобразует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3643, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 6 таблиц кодирования (S3648).
[0720] Следует отметить, что хотя здесь приведен пример, в котором число таблиц кодирования изменяется между 10 и 6, число таблиц кодирования не всегда ограничивается этим. Например, устройство декодирования трехмерных данных может изменять число таблиц кодирования между N и M, при этом M является целым числом, меньшим или равным N.
[0721] После этого, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе индекса, полученного на этапе S3647 или S3648 (S3649). Затем, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S3650).
[0722] В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S3651). Другими словами, этапы S3642-S3650 повторяются рекурсивно.
[0723] Как указано выше, устройство кодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, показанный на фиг. 116. Во-первых, устройство кодирования трехмерных данных кодирует первый флаг (например, search_flag), указывающий то, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при кодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2 (S3661). Другими словами, устройство кодирования трехмерных данных формирует поток битов, включающий в себя первый флаг.
[0724] Устройство кодирования трехмерных данных выбирает таблицу кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое кодирование для информации текущего узла с использованием выбранной таблицы кодирования (S3663), когда первый флаг указывает то, что на узел следует ссылаться ("Да" на S3662).
[0725] Устройство кодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое кодирование для информации текущего узла с использованием выбранной таблицы кодирования (S3664), когда первый флаг указывает то, что на узел не следует ссылаться, при этом M является целым числом, отличающимся от N ("Нет" на S3662).
[0726] Вследствие этого, поскольку можно сокращать число таблиц кодирования, можно уменьшать объем обработки. Кроме того, поскольку можно задавать таблицу кодирования надлежащим образом посредством изменения числа таблиц кодирования согласно тому, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, можно уменьшать объем обработки при подавлении уменьшения эффективности кодирования.
[0727] Например, N превышает M.
[0728] Например, когда устройство кодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования, устройство кодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования со ссылкой на таблицу соответствий (например, на таблицу, показанную на фиг. 106) согласно состояниям заполнения соседних узлов, причем таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и M таблиц кодирования, при этом L является целым числом, большим M.
[0729] Например, когда устройство кодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования, устройство кодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования со ссылкой на первую таблицу соответствий (например, на таблицу, показанную на фиг. 106) и на вторую таблицу соответствий (например, на таблицу, показанную на фиг. 107), согласно состояниям заполнения соседних узлов, причем первая таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и I таблиц кодирования, причем вторая таблица соответствий указывает взаимосвязь соответствия между I таблиц кодирования и M таблиц кодирования, при этом L является целым числом, большим I, при этом I является целым числом, большим M.
[0730] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 1, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, горизонтальном по отношению к плоскости X-Y.
[0731] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 2, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, вертикальном по отношению к плоскости X-Y.
[0732] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 3, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является горизонтальной по отношению к плоскости X-Y.
[0733] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 4, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является вертикальной по отношению к плоскости X-Y.
[0734] Например, устройство кодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0735] Кроме того, устройство декодирования трехмерных данных согласно настоящему варианту осуществления выполняет процесс, показанный на фиг. 117. Устройство декодирования трехмерных данных декодирует первый флаг (например, search_flag), указывающий то, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, при декодировании текущего узла, включенного в N-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом N является целым числом, большим или равным 2 (S3671). Другими словами, устройство декодирования трехмерных данных получает первый флаг из потока битов.
[0736] Устройство декодирования трехмерных данных выбирает таблицу кодирования из N таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла и выполняет арифметическое декодирование для информации текущего узла с использованием выбранной таблицы кодирования (S3673), когда первый флаг указывает то, что на узел следует ссылаться ("Да" на S3672).
[0737] Устройство декодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования согласно состояниям заполнения соседних узлов для текущего узла, и выполняет арифметическое декодирование для информации текущего узла с использованием выбранной таблицы кодирования (S3674), когда первый флаг указывает то, что на узел не следует ссылаться ("Нет" на S3672), при этом M является целым числом, отличающимся от N.
[0738] Вследствие этого, поскольку можно сокращать число таблиц кодирования, можно уменьшать объем обработки. Кроме того, поскольку можно задавать таблицу кодирования надлежащим образом посредством изменения числа таблиц кодирования согласно тому, следует или нет ссылаться на узел, имеющий родительский узел, отличающийся от родительского узла для текущего узла, можно уменьшать объем обработки при подавлении уменьшения эффективности кодирования.
[0739] Например, N превышает M.
[0740] Например, когда устройство декодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования, устройство декодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования со ссылкой на таблицу соответствий (например, на таблицу, показанную на фиг. 106) согласно состояниям заполнения соседних узлов, причем таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и M таблиц кодирования, при этом L является целым числом, большим M.
[0741] Например, когда устройство декодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования, устройство декодирования трехмерных данных выбирает таблицу кодирования из M таблиц кодирования со ссылкой на первую таблицу соответствий (например, на таблицу, показанную на фиг. 106) и на вторую таблицу соответствий (например, на таблицу, показанную на фиг. 107), согласно состояниям заполнения соседних узлов, причем первая таблица соответствий указывает взаимосвязь соответствия между L шаблонов заполнения, указывающих состояния заполнения соседних узлов, и I таблиц кодирования, причем вторая таблица соответствий указывает взаимосвязь соответствия между I таблиц кодирования и M таблиц кодирования, при этом L является целым числом, большим I, при этом I является целым числом, большим M.
[0742] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 1, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, горизонтальном по отношению к плоскости X-Y.
[0743] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 2, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых один из трех соседних узлов является занятым и является соседним с текущим узлом в направлении, вертикальном по отношению к плоскости X-Y.
[0744] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 3, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является горизонтальной по отношению к плоскости X-Y.
[0745] Например, состояния заполнения соседних узлов, когда первый флаг указывает то, что на узел не следует ссылаться, представляют собой шаблоны заполнения, представленные посредством комбинаций позиции текущего узла в родительском узле и состояний заполнения трех соседних узлов в родительском узле. Идентичная таблица кодирования (например, группа 4, показанная на фиг. 104) из числа M таблиц кодирования назначается, из числа шаблонов заполнения, шаблонам заполнения, в которых два из трех соседних узлов являются занятыми, и плоскость, заданная посредством двух из трех занятых соседних узлов и текущего узла, является вертикальной по отношению к плоскости X-Y.
[0746] Например, устройство декодирования трехмерных данных включает в себя процессор и запоминающее устройство, и процессор выполняет вышеуказанный процесс с использованием запоминающего устройства.
[0747] Вариант 11 осуществления
В дальнейшем описывается другой способ уменьшения числа таблиц кодирования в настоящем варианте осуществления. В настоящем варианте осуществления, шаблоны заполнения соседних узлов группируются на основе номера заполнения, который представляет собой число соседних занятых узлов. Иначе говоря, одна из четырех таблиц кодирования используется согласно числу соседних занятых узлов независимо от позиции текущего узла и позиций соседних занятых узлов.
[0748] Фиг. 118 является схемой, иллюстрирующей пример разделения 64 шаблонов заполнения соседних узлов на 4 группы. Шаблон заполнения соседних узлов, имеющий номер заполнения нуль, классифицируется в группу 0. Шаблон заполнения соседних узлов, имеющий номер заполнения один, классифицируется в группу 1. Шаблон заполнения соседних узлов, имеющий номер заполнения два, классифицируется в группу 2. Шаблон заполнения соседних узлов, имеющий номер заполнения три, классифицируется в группу 3.
[0749] Как указано выше, устройство кодирования трехмерных данных может выбирать таблицу кодирования согласно тому, сколько соседних узлов из числа соседних узлов для текущего узла являются занятыми. Из этого следует, что идентичная таблица кодирования назначается аналогичным формам независимо от перемещения в пространстве и вращения. Соответственно, можно повышать эффективность кодирования при одновременном уменьшении числа таблиц кодирования.
[0750] Например, когда вышеуказанный режим используется, режим 4 кодирования добавляется в качестве режима кодирования. В режиме 4 кодирования (CodingMode=4), 64 шаблона заполнения соседних узлов получаются посредством ссылки на код заполнения родительского узла и выполнения поиска соседних узлов относительно родительского узла. Помимо этого, таблица поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 4 таблиц кодирования, используется.
[0751] Кроме того, в качестве другого примера режима кодирования (CodingMode), например, устройство кодирования трехмерных данных присоединяет, к потоку битов, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла. Когда search_flag=1, устройство кодирования трехмерных данных может вычислять шаблон заполнения соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла, формировать индекс одной из десяти таблиц кодирования из значения шаблона заполнения соседних узлов и выполнять арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс.
[0752] Когда search_flag=0, устройство кодирования трехмерных данных может вычислять шаблон заполнения соседних узлов без выполнения поиска соседних узлов относительно родительского узла, формировать индекс одной из четырех таблиц кодирования из значения шаблона заполнения соседних узлов и выполнять арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс. Можно управлять балансом между эффективностью кодирования и объемом обработки посредством выбора поиска соседних узлов относительно родительского узла и таблицы кодирования, которая должна использоваться, согласно значению search_flag вышеуказанным способом.
[0753] Фиг. 119 является блок-схемой последовательности операций способа для этого процесса. Во-первых, устройство кодирования трехмерных данных определяет то, равен или нет search_flag 1 (S3701). Следует отметить, что устройство кодирования трехмерных данных может кодировать, например, флаг (search_skip_flag), указывающий то, следует или нет пропускать поиск соседних узлов относительно родительского узла, вместо search_flag. Например, устройство кодирования трехмерных данных присоединяет search_skip_flag к потоку битов. Когда search_skip_flag=1, устройство кодирования трехмерных данных вычисляет шаблон заполнения соседних узлов без выполнения поиска соседних узлов относительно родительского узла, формирует индекс одной из четырех таблиц кодирования из значения шаблона заполнения соседних узлов и выполняет арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс. Когда search_skip_flag=0, устройство кодирования трехмерных данных вычисляет шаблон заполнения соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла, формирует индекс одной из десяти таблиц кодирования из значения шаблона заполнения соседних узлов и выполняет арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс.
[0754] Когда search_flag равен 1 ("Да" на S3701), устройство кодирования трехмерных данных формирует индекс таблицы кодирования с использованием таблицы A преобразования, которая преобразует значения 64 шаблонов заполнения соседних узлов в индексы 10 таблиц кодирования (S3702).
[0755] Когда search_flag не равен 1 ("Нет" на S3701), устройство кодирования трехмерных данных формирует индекс таблицы кодирования с использованием таблицы B преобразования, которая преобразует значения 64 шаблонов заполнения соседних узлов в индексы 4 таблиц кодирования (S3703).
[0756] Следует отметить, что устройство кодирования трехмерных данных может использовать идентичный способ инициализации значений вероятности в таблицах кодирования, назначенных идентичному шаблону заполнения соседних узлов, в таблице A преобразования и таблице B преобразования. Например, устройство кодирования трехмерных данных может инициализировать, для таблицы 5 таблицы A преобразования и таблицы 2 таблицы B преобразования, назначенной шаблону 4, значения вероятностей таблиц кодирования посредством идентичного способа. Поскольку это исключает необходимость в предоставлении способа инициализации для каждой таблицы преобразования, можно уменьшать объем обработки.
[0757] Далее описывается последовательность операций обработки, выполняемой посредством каждого из устройства кодирования трехмерных данных и устройства декодирования трехмерных данных согласно настоящему варианту осуществления.
[0758] Фиг. 120 является блок-схемой последовательности операций способа для процесса кодирования трехмерных данных, выполняемого посредством устройства кодирования трехмерных данных. Во-первых, устройство кодирования трехмерных данных задает пространство (текущий узел), включающее в себя часть или все введенное облако трехмерных точек (S3711). Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S3712). После этого устройство кодирования трехмерных данных формирует код заполнения текущего узла согласно тому, включает или нет каждый узел в себя облако точек (S3713).
[0759] После этого, устройство кодирования трехмерных данных вычисляет (получает) информацию заполнения соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S3714).
[0760] Затем, устройство кодирования трехмерных данных определяет то, представляет или нет режим кодирования собой предварительно определенный режим (S3715). Например, когда CodingMode=1, устройство кодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство кодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0761] Следует отметить, что, например, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, может использоваться вместо CodingMode. В этом случае, когда, например, search_flag=1, устройство кодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство кодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0762] Когда режим кодирования представляет собой предварительно определенный режим ("Да" на S3715), устройство кодирования трехмерных данных получает информацию заполнения (шаблоны заполнения оставшихся соседних узлов) оставшихся соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла для выполнения поиска всех кодированных дочерних узлов (S3716). После этого устройство кодирования трехмерных данных комбинирует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3714, и шаблоны заполнения оставшихся соседних узлов, вычисленные посредством поиска соседних узлов относительно родительского узла на этапе S3716 (S3717).
[0763] После этого, устройство кодирования трехмерных данных преобразует шаблон заполнения соседних узлов, полученный посредством комбинации, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 10 таблиц кодирования (S3718).
[0764] С другой стороны, когда режим кодирования не представляет собой предварительно определенный режим ("Нет" на S3715), устройство кодирования трехмерных данных преобразует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3714, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 4 таблиц кодирования (S3719).
[0765] Следует отметить, что хотя здесь приведен пример, в котором число таблиц кодирования изменяется между 10 и 4, число таблиц кодирования не всегда ограничивается этим. Например, устройство кодирования трехмерных данных может изменять число таблиц кодирования между N и M, при этом M является целым числом, меньшим или равным N.
[0766] Затем, устройство кодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного кодирования, на основе индекса, полученного на этапе S3718 или S3719 (S3720). После этого устройство кодирования трехмерных данных энтропийно кодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S3721).
[0767] Следует отметить, что устройство кодирования трехмерных данных может кодировать, в качестве информации заголовка, информацию (CodingMode), указывающую режим кодирования. Помимо этого, устройство кодирования трехмерных данных может присоединять, к потоку битов, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, вместо CodingMode.
[0768] В завершение, устройство кодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и кодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S3722). Другими словами, этапы S3712-S3721 повторяются рекурсивно.
[0769] Фиг. 121 является блок-схемой последовательности операций способа для процесса декодирования трехмерных данных в устройстве декодирования трехмерных данных. Во-первых, устройство декодирования трехмерных данных задает пространство (текущий узел), которое должно декодироваться, с использованием информации заголовка потока битов (S3731).
[0770] Следует отметить, что устройство декодирования трехмерных данных может декодировать информацию (CodingMode), указывающую режим кодирования, включенный в информацию заголовка. Помимо этого, устройство декодирования трехмерных данных может декодировать флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, вместо CodingMode.
[0771] Затем, устройство декодирования трехмерных данных формирует восемь небольших пространств (узлов) посредством разделения текущего узла на восемь (S3732). После этого устройство декодирования трехмерных данных вычисляет (получает) информацию заполнения соседнего опорного узла для текущего узла из кода заполнения родительского узла для текущего узла (S3733).
[0772] После этого, устройство декодирования трехмерных данных определяет то, представляет или нет режим кодирования собой предварительно определенный режим (S3734). Например, когда CodingMode=1, устройство декодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство декодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0773] Следует отметить, что, например, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла, может использоваться вместо CodingMode. В этом случае, когда, например, search_flag=1, устройство декодирования трехмерных данных определяет то, что режим кодирования представляет собой предварительно определенный режим; и в других случаях, устройство декодирования трехмерных данных определяет то, что режим кодирования не представляет собой предварительно определенный режим.
[0774] Когда режим кодирования представляет собой предварительно определенный режим ("Да" на S3734), устройство декодирования трехмерных данных получает информацию заполнения (шаблоны заполнения оставшихся соседних узлов) оставшихся соседних узлов посредством выполнения поиска соседних узлов относительно родительского узла для выполнения поиска всех кодированных дочерних узлов (S3735). Затем, устройство декодирования трехмерных данных комбинирует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3733, и шаблоны заполнения оставшихся соседних узлов, вычисленные посредством поиска соседних узлов относительно родительского узла на этапе S3735 (S3736).
[0775] После этого устройство декодирования трехмерных данных преобразует шаблон заполнения соседних узлов, полученный посредством комбинации, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 10 таблиц кодирования (S3737).
[0776] С другой стороны, когда режим кодирования не представляет собой предварительно определенный режим ("Нет" на S3734), устройство декодирования трехмерных данных преобразует шаблон заполнения соседних узлов, вычисленный из кода заполнения родительского узла на этапе S3733, в индекс с использованием таблицы поиска, которая преобразует 64 шаблона заполнения соседних узлов в индексы 4 таблиц кодирования (S3738).
[0777] Следует отметить, что хотя здесь приведен пример, в котором число таблиц кодирования изменяется между 10 и 4, число таблиц кодирования не всегда ограничивается этим. Например, устройство декодирования трехмерных данных может изменять число таблиц кодирования между N и M, при этом M является целым числом, меньшим или равным N.
[0778] После этого, устройство декодирования трехмерных данных выбирает таблицу кодирования, которая должна использоваться для энтропийного декодирования, на основе индекса, полученного на этапе S3737 или S3738 (S3739). Затем, устройство декодирования трехмерных данных энтропийно декодирует код заполнения текущего узла с использованием выбранной таблицы кодирования (S3740).
[0779] В завершение, устройство декодирования трехмерных данных повторяет процесс разделения каждого узла на восемь и декодирования кода заполнения каждого узла до тех пор, пока каждый узел не может разделяться (S3741). Другими словами, этапы S3732-S3740 повторяются рекурсивно.
[0780] Следует отметить, что хотя выше описана главным образом работа устройства кодирования трехмерных данных, устройство декодирования трехмерных данных может выполнять идентичную работу. Помимо этого, информация, такая как различные типы флагов, сформированных посредством устройства кодирования трехмерных данных, включается в поток битов. Устройство декодирования трехмерных данных получает информацию, такую как различные типы флагов, включенных в поток битов, и выполняет процесс посредством ссылки на информацию.
[0781] Вариант 12 осуществления
В дальнейшем описывается способ удаления избыточной таблицы кодирования в настоящем варианте осуществления. Фиг. 122 является схемой для иллюстрации избыточных таблиц кодирования. Когда табличные индексы, которые с большой вероятностью должны использоваться в способах выбора таблиц, не являются непрерывными, создаются избыточные таблицы кодирования.
[0782] В ответ на это, можно удалять избыточные таблицы посредством создания таблиц кодирования динамически. Как результат, можно экономить аппаратные ресурсы. Например, можно предотвращать создание избыточных таблиц посредством вычисления числа фактически необходимых таблиц во время компиляции или во время выполнения (в среде выполнения).
[0783] Далее описываются примеры избыточных таблиц кодирования. В первом примере, избыточные таблицы создаются, когда предоставляется один способ выбора. Фиг. 123 является схемой для иллюстрации этого примера.
[0784] Статически созданная таблица кодирования включает в себя избыточные таблицы. Затруднительно точно определять число таблиц на стадии проектирования алгоритма. Соответственно, необходимо подготавливать большее число таблиц, чем фактически требуется.
[0785] С другой стороны, когда таблица кодирования создается динамически, число таблиц вводится в алгоритм во время компиляции или во время выполнения. Как следствие, можно удалять избыточные таблицы.
[0786] Во втором примере, избыточные таблицы создаются при двоичном кодировании, при котором используется взаимосвязь в виде зависимости с соседними узлами. Чтобы повышать эффективность кодирования, информация соседних узлов используется при двоичном кодировании. Фиг. 124 является схемой, иллюстрирующей пример текущего узла. Способ использования информации соседних узлов может отличаться между тем, когда текущий узел не включает в себя соседний узел в родительском узле, и тем, когда текущий узел включает в себя один или более соседних узлов в родительском узле.
[0787] Далее описывается случай 1. Фиг. 125 является схемой, иллюстрирующей работу в случае 1. В случае 1, индекс таблицы кодирования основан на значении каждого кодированного бита в родительском узле.
[0788] В случае 1, устройство кодирования трехмерных данных изменяет таблицу кодирования согласно значению (ENC) каждого бита кода заполнения текущего узла. Например, когда бит 0 равен 1, и бит 1 равен 0, устройство кодирования трехмерных данных может использовать индекс =1 (=1+0) в качестве таблицы кодирования для выполнения арифметического кодирования для бита 2. Другими словами, посредством изменения таблицы кодирования согласно значению каждого бита кодированного кода заполнения, например, устройство кодирования трехмерных данных может выбирать таблицу кодирования, имеющую высокую вероятность в 1, когда частота появления 1 является высокой в каждом бите, и выбирать таблицу кодирования, имеющую высокую вероятность в 0, когда частота появления 0 является высокой в каждом бите. По этой причине, можно повышать эффективность кодирования.
[0789] Кроме того, когда NC=0, т.е. соседние узлы текущего узла не представляют собой занятые узлы, устройство кодирования трехмерных данных может использовать способ выбора таблицы кодирования, описанной в случае 1. По этой причине, когда ассоциирование с соседними узлами является слабым, устройство кодирования трехмерных данных может выбирать таблицу кодирования согласно частотам появления нуля и единицы в коде заполнения. Соответственно, случай 1 в большей степени позволяет повышать эффективность кодирования при одновременном уменьшении числа таблиц кодирования, чем случай 2, который описывается.
[0790] Когда код заполнения равен 8 битам в примере, показанном на фиг. 125, общее число таблиц кодирования равно 1+2+3+…+8=36.
[0791] Далее описывается случай 2. Фиг. 126 является схемой, иллюстрирующей работу в случае 2. В случае 2, индекс таблицы кодирования определяется на основе индекса конфигурации соседних узлов (NC) и кодированного бита (ENC). Например, NC соответствуют вышеуказанным шаблонам заполнения соседних узлов.
[0792] Кроме того, набор различных NC используется. В примере 1, используется число соседних занятых узлов в родительском узле. Другими словами, число NC равно четырем (NC={0, 1, 2, 3}).
[0793] В примере 2, используются позиции соседних занятых узлов. Когда 6 соседних узлов используются, число NC равно 64 (NC={0, 1, 2, …, 63}).
[0794] В примере 3, некоторые NC комбинируются. Как результат, число NC является необязательным. Например, 64 NC комбинируются в 10 NC на основе геометрической информации.
[0795] В случае 2, устройство кодирования трехмерных данных также может изменять таблицу кодирования согласно информации заполнения (NC) соседнего для текущего узла и значения (ENC) каждого бита кода заполнения.
[0796] Фиг. 127 является схемой, иллюстрирующей пример конфигурации шести соседних узлов. Например, когда один из шести соседних узлов, показанных на фиг. 127, является занятым, NC=1 (рассматривается случай, в котором значение NC=0-9), и бит 0 равен 1, устройство кодирования трехмерных данных выбирает таблицу кодирования для выполнения арифметического кодирования для бита 1, с использованием информации NC=1 и бит 0=1. Другими словами, устройство кодирования трехмерных данных изменяет таблицу кодирования согласно информации заполнения соседнего узла и значению каждого бита кодированного кода заполнения. По этой причине, поскольку устройство кодирования трехмерных данных может выбирать соответствующую таблицу кодирования, соответственно, когда, например, один из соседних узлов является занятым, и частота появления 1 является высокой в каждом бите, устройство кодирования трехмерных данных может повышать эффективность кодирования. Дополнительно, когда NC>0, т.е., по меньшей мере, один соседний узел для текущего узла представляет собой занятый узел, устройство кодирования трехмерных данных может использовать способ выбора таблицы кодирования, описанный в случае 2. По этой причине, поскольку устройство кодирования трехмерных данных может выбирать таблицу кодирования согласно ассоциированию с соседними узлами и частотами появления нуля и единицы в коде заполнения, устройство кодирования трехмерных данных может повышать эффективность кодирования.
[0797] Далее описывается третий пример. В третьем примере, например, NC=10 (рассматривается случай, в котором значение NC=0-9). Избыточные таблицы создаются посредством двоичного кодирования, при котором используется информация соседних узлов. Фиг. 128 является схемой для иллюстрации третьего примера.
[0798] В третьем примере, когда NC=0, таблица кодирования выбирается на основе числа битов (ENC), указывающего состояние заполнения и включенного в кодированные биты. Когда NC>0, таблица кодирования выбирается на основе ENC и NC (1-9).
[0799] Фиг. 128 показывает число таблиц кодирования для каждого бита, когда способ выбора таблицы кодирования задается как случай 2 независимо от значения NC (случай 2 для всех); число таблиц кодирования для каждого бита, когда случай 1 используется в качестве способа выбора таблицы кодирования в случае NC=0, и случай 2 используется в качестве способа выбора таблицы кодирования в случае NC>0; и число таблиц, которые не должны использоваться (число избыточных таблиц), которое представляет собой разность между этими числами.
[0800] Когда эти два случая используются, уравнения для вычисления общего числа таблиц являются сложными, и непросто формировать индексы. Следовательно, затруднительно создавать фиксированное число таблиц кодирования. Это обусловлено тем, что число таблиц увеличивается линейно, когда NC=0, но число таблиц увеличивается экспоненциально, когда NC>0. Соответственно, число избыточных таблиц (таблиц, которые не должны использоваться) увеличивается, и невозможно использовать индексы избыточных таблиц для обоих случаев.
[0801] Следует отметить, что устройство кодирования трехмерных данных может удалять таблицы кодирования, которые созданы, но не должны использоваться. Поскольку это позволяет уменьшать время инициализации для таблиц кодирования, можно достигать ускорения и уменьшения использования запоминающего устройства.
[0802] Далее описывается четвертый пример. В четвертом примере, например, NC=4 (рассматривается случай, в котором значение NC=0-3). Избыточные таблицы создаются посредством двоичного кодирования, при котором используется информация соседних узлов. Фиг. 129 является схемой для иллюстрации четвертого примера. Следует отметить, что четвертый пример отличается от третьего примера по общему числу чисел NC. Как показано на фиг. 129, избыточные таблицы (таблицы, которые не должны использоваться) создаются в четвертом примере, как и в случае с третьим примером.
[0803] Далее описываются примеры избыточных таблиц кодирования. Фиг. 130 является схемой, иллюстрирующей пример таблиц кодирования, когда таблицы кодирования создаются статически для каждого бита в вышеуказанном третьем примере (NC=10).
[0804] Как показано на фиг. 130, для NC0, число таблиц увеличивается линейно с увеличением числа битов. Для NC1-NC9, число таблиц увеличивается экспоненциально с увеличением числа битов.
[0805] Здесь, различное кодирование используется между NC0 и NC>0. Как результат, общее число таблиц увеличивается линейно для NC0 и увеличивается экспоненциально для NC>0.
[0806] Фиг. 131 является схемой, иллюстрирующей пример таблиц кодирования, когда таблицы кодирования создаются статически для каждого бита в вышеуказанном четвертом примере (NC=4). Следует отметить, что устройство кодирования трехмерных данных не должно обязательно создавать избыточные таблицы посредством разделения таблицы для NC0 и таблицы для NC>0, как показано на фиг. 132.
[0807] В пятом примере, устройство кодирования трехмерных данных удаляет избыточные таблицы посредством создания таблиц для NC0 и таблиц для NC>0 отдельно. Фиг. 133 является схемой для иллюстрации пятого примера. Фиг. 134 является схемой, иллюстрирующей общие числа таблиц кодирования после того, как избыточные таблицы удаляются.
[0808] Далее описывается процесс создания таблицы кодирования, имеющей динамический размер. Фиг. 135 является схемой для иллюстрации этого процесса. Чтобы создавать требуемое и точное число таблиц кодирования, задание (ввод с заданием) для размера таблицы кодирования вводится в устройство кодирования трехмерных данных.
[0809] Фиг. 136 является схемой, иллюстрирующей размер каждой таблицы, когда ввод с заданием=10. Как показано на фиг. 136, размер Size таблицы задается как Size=2bit*(x-1)+bit+1 в исходном коде. Размер каждой таблицы определяется после того, как неопределенное число x получается. Здесь, "2bit*(x-1)" соответствуют размеру, когда NC>0 во втором примере, и "bit+1" соответствует размеру, когда NC=0.
[0810] Посредством использования такого задания, можно создавать таблицы кодирования динамически во время компиляции или во время выполнения.
[0811] Фиг. 137 является блок-схемой последовательности операций способа для процесса создания динамической таблицы кодирования. Во-первых, устройство кодирования трехмерных данных определяет то, равен или нет динамический флаг размера таблицы (dynamicTableSize) 1 (S3801); dynamicTableSize представляет собой флаг, указывающий то, следует или нет использовать динамический размер таблицы. Устройство кодирования трехмерных данных формирует флаг и поток битов, включающий в себя флаг. Кроме того, устройство декодирования трехмерных данных получает флаг, включенный в поток битов.
[0812] Когда dynamicTableSize равен 1 ("Да" на S3801), устройство кодирования трехмерных данных загружает задание для динамического размера (S3802). Затем, устройство кодирования трехмерных данных создает таблицу кодирования на основе нагруженного задания (S3803). Эта таблица кодирования не включает в себя избыточных таблиц.
[0813] Когда dynamicTableSize не равен 1 ("Нет" на S3801), устройство кодирования трехмерных данных создает статическую таблицу кодирования (S3804). Эта таблица кодирования может включать в себя избыточные таблицы.
[0814] Следует отметить, что хотя выше приведен пример, в котором используется 8-битовый код заполнения, настоящее раскрытие не обязательно ограничивается этим. Например, настоящая процедура может применяться к коду, имеющему другое число битов, к примеру, десять битов. Помимо этого, код, который должен использоваться, не ограничен кодом заполнения.
[0815] Фиг. 138 является схемой, иллюстрирующей размер каждой таблицы, когда ввод с заданием=4. Следует отметить, что способ вычисления размера таблицы является идентичным, когда ввод с заданием=10.
[0816] Устройство кодирования трехмерных данных может изменять процесс создания таблицы на основе флага поиска (search_flag). Например, устройство кодирования трехмерных данных присоединяет, к потоку битов, флаг поиска (search_flag), указывающий то, следует или нет выполнять поиск соседних узлов относительно родительского узла. Когда search_flag=1, устройство кодирования трехмерных данных может подготавливать таблицы кодирования, когда NC={0, 1, …, 9}; вычислять шаблон заполнения соседних узлов (NC) посредством выполнения поиска соседних узлов относительно родительского узла; формировать индекс одной из таблиц кодирования с использованием значения шаблона заполнения соседних узлов и значения каждого бита кодированного кода заполнения; и выполнять арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс.
[0817] Кроме того, когда search_flag=0, устройство кодирования трехмерных данных может подготавливать таблицы кодирования, когда NC={0, 1, …, 3}; вычислять шаблон заполнения соседних узлов (NC) без выполнения поиска соседних узлов относительно родительского узла; формировать индекс одной из таблиц кодирования с использованием значения шаблона заполнения соседних узлов и значения каждого бита кодированного кода заполнения; и выполнять арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс.
[0818] Можно управлять балансом между эффективностью кодирования, объемом обработки и объемом запоминающего устройства посредством (i) управления числом таблиц кодирования, которые должны создаваться посредством изменения значения search_flag, и (ii) выбора поиска соседних узлов относительно родительского узла и таблицы кодирования, которая должна использоваться вышеуказанным способом.
[0819] Фиг. 139 является блок-схемой последовательности операций способа этого процесса. Во-первых, устройство кодирования трехмерных данных определяет то, равен или нет search_flag 1 (S3811). Следует отметить, что устройство кодирования трехмерных данных может кодировать, например, флаг (search_skip_flag), указывающий то, следует или нет пропускать поиск соседних узлов относительно родительского узла, вместо search_flag. Например, устройство кодирования трехмерных данных присоединяет search_skip_flag к потоку битов. Когда search_skip_flag=1, устройство кодирования трехмерных данных подготавливает таблицы кодирования, когда NC={0, 1, …, 3}; вычисляет шаблон заполнения соседних узлов (NC) без выполнения поиска соседних узлов относительно родительского узла; формирует индекс одной из таблиц кодирования с использованием значения шаблона заполнения соседних узлов и значения каждого бита кодированного кода заполнения; и выполняет арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс. Кроме того, когда search_skip_flag=0, устройство кодирования трехмерных данных подготавливает таблицы кодирования, когда NC={0, 1, …, 9}; вычисляет NC посредством выполнения поиска соседних узлов относительно родительского узла; формирует индекс одной из таблиц кодирования с использованием значения NC и значения каждого бита кодированного кода заполнения; и выполняет арифметическое кодирование для кода заполнения с использованием таблицы кодирования, имеющей индекс.
[0820] Когда search_flag равен 1 ("Да" на S3811), устройство кодирования трехмерных данных подготавливает таблицы кодирования, когда NC={0, 1, …, 9} (S3812). В это время, устройство кодирования трехмерных данных может удалять избыточные таблицы.
[0821] Когда search_flag не равен 1 ("Нет" на S3811), устройство кодирования трехмерных данных подготавливает таблицы кодирования, когда NC={0, 1, …, 3} (S3813). В это время, устройство кодирования трехмерных данных может удалять избыточные таблицы.
[0822] Следует отметить, что хотя выше описана главным образом работа устройства кодирования трехмерных данных, устройство декодирования трехмерных данных может выполнять идентичную работу. Помимо этого, информация, такая как различные типы флагов, сформированных посредством устройства кодирования трехмерных данных, включается в поток битов. Устройство декодирования трехмерных данных получает информацию, такую как различные типы флагов, включенных в поток битов, и выполняет процесс посредством ссылки на информацию.
[0823] Выше описываются устройство кодирования трехмерных данных, устройство декодирования трехмерных данных и т.п. согласно вариантам осуществления настоящего раскрытия, но настоящее раскрытие не ограничено этими вариантами осуществления.
[0824] Следует отметить, что каждый из процессоров, включенных в устройство кодирования трехмерных данных, устройство декодирования трехмерных данных и т.п. согласно вышеуказанным вариантам осуществления, типично реализуется в качестве большой интегральной (LSI) схемы, которая представляет собой интегральную схему (IC). Они могут принимать форму отдельных микросхем или могут частично или полностью пакетироваться в одну микросхему.
[0825] Такая IC не ограничена LSI и в силу этого может реализовываться как специализированная схема или процессор общего назначения. Альтернативно, может использоваться программируемая пользователем вентильная матрица (FPGA), которая обеспечивает возможность программирования после изготовления LSI, или переконфигурируемый процессор, который обеспечивает возможность переконфигурирования соединения и настройки схемных элементов внутри LSI.
[0826] Кроме того, в вышеописанных вариантах осуществления, структурные компоненты могут реализовываться как специализированные аппаратные средства или могут быть реализованы посредством выполнения программно-реализованной программы, подходящей для таких структурных компонентов. Альтернативно, структурные компоненты могут реализовываться посредством программного исполнительного модуля, такого как CPU или процессор, считывающий и выполняющий программно-реализованную программу, записанную на носителе записи, таком как жесткий диск или полупроводниковое запоминающее устройство.
[0827] Настоящее раскрытие также может реализовываться как способ кодирования трехмерных данных, способ декодирования трехмерных данных и т.п., осуществляемые посредством устройства кодирования трехмерных данных, устройства декодирования трехмерных данных и т.п.
[0828] Кроме того, разделения функциональных блоков, показанных на блок-схемах, представляют собой просто примеры, и в силу этого множество функциональных блоков могут реализовываться как один функциональный блок, или один функциональный блок может разделяться на множество функциональных блоков, или одна или более функций могут перемещаться в другой функциональный блок. Кроме того, функции множества функциональных блоков, имеющих аналогичные функции, могут обрабатываться только посредством аппаратных средств или программного обеспечения параллелизованным или разделенным во времени способом.
[0829] Кроме того, порядок обработки выполнения этапов, показанный на блок-схемах последовательности операций способа, представляет собой просто иллюстрацию для конкретного описания настоящего раскрытия и в силу этого может представлять собой порядок, отличный от показанного порядка. Кроме того, один или более этапов могут выполняться одновременно (параллельно) с другим этапом.
[0830] Выше описываются устройство кодирования трехмерных данных, устройство декодирования трехмерных данных и т.п. согласно одному или более аспектам на основе вариантов осуществления, но настоящее раскрытие не ограничено этими вариантами осуществления. Один или более аспектов в силу этого могут включать в себя формы, достигаемые посредством внесения различных модификаций в вышеуказанные варианты осуществления, которые могут быть задуманы специалистами в данной области техники, а также формы, достигаемые посредством комбинирования структурных компонентов в различных вариантах осуществления, без существенного отступления от сущности настоящего раскрытия.
Промышленная применимость
[0831] Настоящее раскрытие является применимым к устройству кодирования трехмерных данных и к устройству декодирования трехмерных данных.
Ссылки с номерами на чертежах
[0832] 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 - энтропийный декодер
1900 - устройство кодирования трехмерных данных
1901, 1911 - формирователь деревьев октантов
1902, 1912 - модуль вычисления информации подобия
1903, 1913 - модуль выбора таблиц кодирования
1904 - энтропийный кодер
1910 - устройство декодирования трехмерных данных
1914 - энтропийный декодер
2100 - устройство кодирования трехмерных данных
2101, 2111 - формирователь деревьев октантов
2102, 2112 - модуль вычисления геометрической информации
2103, 2113 - модуль выбора таблиц кодирования
2104 - энтропийный кодер
2110 - устройство декодирования трехмерных данных
2114 - энтропийный декодер
3600 - устройство кодирования трехмерных данных
3601, 3611 - формирователь деревьев октантов
3602, 3612 - модуль вычисления геометрической информации
3603, 3613 - формирователь индексов
3604, 3614 - модуль выбора таблиц кодирования
3605 - энтропийный кодер
3610 - устройство декодирования трехмерных данных
3615 - энтропийный декодер
Изобретение относится к способам и устройствам кодирования и декодирования трехмерных данных. Технический результат заключается в оптимизации кодировании и декодировании трехмерных данных. В способе формируют n-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом n является целым числом, большим или равным 2; кодируют первый параметр; когда первый параметр указывает первое значение, (i) выбирают группу из N групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом, и расположенных внутри или снаружи родительского узла текущего узла, (ii) выбирают контексты на основе выбранной группы, и (iii) выполняют арифметическое кодирование для текущего узла с использованием выбранных контекстов, причем соседние узлы и текущий узел включены в упомянутую n-арную древовидную структуру, каждое из состояний заполнения соседних узлов указывает, включает ли соответствующий один из соседних узлов трехмерную точку, при этом соседние узлы включены в n-арную древовидную структуру на том же уровне, что и текущий узел; и когда первый параметр указывает второе значение, отличное от первого значения, (i) выбирают группу из М групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом и расположенных внутри родительского узла текущего узла, при этом М является целым числом, отличающимся от N, (ii) выбирают контексты на основе выбранной группы, и (iii) выполняют арифметическое кодирование для текущего узла с использованием выбранных контекстов. 4 н. и 8 з.п. ф-лы, 139 ил.
1. Способ кодирования трехмерных данных, содержащий этапы, на которых:
формируют n-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом n является целым числом, большим или равным 2;
кодируют первый параметр;
когда первый параметр указывает первое значение, (i) выбирают группу из N групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом, и расположенных внутри или снаружи родительского узла текущего узла, (ii) выбирают контексты на основе выбранной группы, и (iii) выполняют арифметическое кодирование для текущего узла с использованием выбранных контекстов, причем соседние узлы и текущий узел включены в упомянутую n-арную древовидную структуру, каждое из состояний заполнения соседних узлов указывает, включает ли соответствующий один из соседних узлов трехмерную точку, при этом соседние узлы включены в n-арную древовидную структуру на том же уровне, что и текущий узел; и
когда первый параметр указывает второе значение, отличное от первого значения, (i) выбирают группу из М групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом и расположенных внутри родительского узла текущего узла, при этом М является целым числом, отличающимся от N, (ii) выбирают контексты на основе выбранной группы, и (iii) выполняют арифметическое кодирование для текущего узла с использованием выбранных контекстов.
2. Способ кодирования трехмерных данных по п. 1,
в котором N превышает М.
3. Способ кодирования трехмерных данных по п. 1,
когда первый параметр указывает первое значение, первые шаблоны заполнения, каждый из которых указывает состояния заполнения соседних узлов, группируются в N групп,
когда первый параметр указывает второе значение, вторые шаблоны заполнения, указывающие состояния заполнения соседних узлов, группируются в М групп,
при этом каждый из вторых шаблонов заполнения определяется на основе состояний заполнения соседних узлов, расположенных внутри родительского узла текущего узла, и положения текущего узла в родительском узле.
4. Способ кодирования трехмерных данных по п. 3,
в котором количество первых шаблонов заполнения совпадает с количеством вторых шаблонов заполнения.
5. Способ кодирования трехмерных данных по п. 1,
в котором n-арная древовидная структура представляет собой структуру в виде дерева октантов.
6. Способ декодирования трехмерных данных, содержащий этапы, на которых:
получают n-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом п является целым числом, большим или равным 2;
получают первый параметр;
когда первый параметр указывает первое значение, (i) выбирают группу из N групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом, и расположенных внутри или снаружи родительского узла текущего узла, (ii) выбирают контексты на основе выбранной группы, и (iii) выполняют арифметическое декодирование для текущего узла с использованием выбранных контекстов, причем соседние узлы и текущий узел включены в упомянутую n-арную древовидную структуру, каждое из состояний заполнения соседних узлов указывает, включает ли соответствующий один из соседних узлов трехмерную точку, при этом соседние узлы включены в n-арную древовидную структуру на том же уровне, что и текущий узел;
когда первый параметр указывает второе значение, отличное от первого значения, (i) выбирают группу из М групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом и расположенных внутри родительского узла текущего узла, при этом М является целым числом, отличающимся от N, (ii) выбирают контексты на основе выбранной группы, и (iii) выполняют арифметическое декодирование для текущего узла с использованием выбранных контекстов.
7. Способ декодирования трехмерных данных по п. 6,
в котором N превышает М.
8. Способ декодирования трехмерных данных по п. 6,
когда первый параметр указывает первое значение, первые шаблоны заполнения, каждый из которых указывает состояния заполнения соседних узлов, группируются в N групп,
когда первый параметр указывает второе значение, вторые шаблоны заполнения, указывающие состояния заполнения соседних узлов, группируются в М групп,
при этом каждый из вторых шаблонов заполнения определяется на основе состояний заполнения соседних узлов, расположенных внутри родительского узла текущего узла, и положения текущего узла в родительском узле.
9. Способ декодирования трехмерных данных по п. 8,
в котором количество первых шаблонов заполнения совпадает с количеством вторых шаблонов заполнения.
10. Способ декодирования трехмерных данных по п. 6,
в котором n-арная древовидная структура представляет собой структуру в виде дерева октантов.
11. Устройство кодирования трехмерных данных, которое кодирует трехмерные точки, каждая из которых включает в себя информацию атрибутов, причем устройство кодирования трехмерных данных содержит:
процессор; и запоминающее устройство;
при этом, с использованием запоминающего устройства, процессор:
формирует n-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом n является целым числом, большим или равным 2;
кодирует первый параметр;
когда первый параметр указывает первое значение, (i) выбирает группу из N групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом, и расположенных внутри или снаружи родительского узла текущего узла, (ii) выбирает контексты на основе выбранной группы, и (iii) выполняет арифметическое кодирование для текущего узла с использованием выбранных контекстов, причем соседние узлы и текущий узел включены в упомянутую n-арную древовидную структуру, каждое из состояний заполнения соседних узлов указывает, включает ли соответствующий один из соседних узлов трехмерную точку, при этом соседние узлы включены в n-арную древовидную структуру на том же уровне, что и текущий узел; и
когда первый параметр указывает второе значение, отличное от первого значения, (i) выбирает группу из М групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом и расположенных внутри родительского узла текущего узла, при этом М является целым числом, отличающимся от N, (ii) выбирает контексты на основе выбранной группы, и (iii) выполняет арифметическое кодирование для текущего узла с использованием выбранных контекстов.
12. Устройство декодирования трехмерных данных, которое декодирует трехмерные точки, каждая из которых включает в себя информацию атрибутов, причем устройство декодирования трехмерных данных содержит:
процессор; и
запоминающее устройство;
при этом, с использованием запоминающего устройства, процессор:
получает n-арную древовидную структуру трехмерных точек, включенных в трехмерные данные, при этом n является целым числом, большим или равным 2;
получает первый параметр;
когда первый параметр указывает первое значение, (i) выбирает группу из N групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом, и расположенных внутри или снаружи родительского узла текущего узла, (ii) выбирает контексты на основе выбранной группы, и (iii) выполняет арифметическое декодирование для текущего узла с использованием выбранных контекстов, причем соседние узлы и текущий узел включены в упомянутую n-арную древовидную структуру, каждое из состояний заполнения соседних узлов указывает, включает ли соответствующий один из соседних узлов трехмерную точку, при этом соседние узлы включены в n-арную древовидную структуру на том же уровне, что и текущий узел; и
когда первый параметр указывает второе значение, отличное от первого значения, (i) выбирает группу из М групп согласно состояниям заполнения соседних узлов, соседствующих с текущим узлом и расположенных внутри родительского узла текущего узла, при этом М является целым числом, отличающимся от N, (ii) выбирает контексты на основе выбранной группы, и (iii) выполняет арифметическое декодирование для текущего узла с использованием выбранных контекстов.
S | |||
Lasserre (Blackberry) и др., "Neighbour-dependent entropy coding of occupancy patterns in TMC3", MPEG Meeting, 22.01.2018-26.01.2018, URL: http://phenix.int-evry.fr/mpeg/doc_end_user/documents/121_Gwangju/wg11/m42238-v1-%5BPCC%5D_Neighbour-dependent_entropy_coding_of_occupancy_patterns_ in_TMC3.zip | |||
Chi Wang (Panasonic) и др., "PCC |
Авторы
Даты
2023-06-26—Публикация
2019-06-14—Подача