ES3074503T3 - Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device - Google Patents
Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding deviceInfo
- Publication number
- ES3074503T3 ES3074503T3 ES20752819T ES20752819T ES3074503T3 ES 3074503 T3 ES3074503 T3 ES 3074503T3 ES 20752819 T ES20752819 T ES 20752819T ES 20752819 T ES20752819 T ES 20752819T ES 3074503 T3 ES3074503 T3 ES 3074503T3
- Authority
- ES
- Spain
- Prior art keywords
- information
- dimensional data
- dimensional
- data
- encoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
Un método de codificación de datos tridimensional que incluye el cálculo de una pluralidad de valores de coeficientes a partir de la pluralidad de información de atributos de una pluralidad de puntos tridimensionales incluidos en datos de grupo de puntos (S7091), la generación de una pluralidad de valores cuantificados mediante la cuantificación de cada uno de los valores de coeficientes (S7092) y la generación de un flujo de bits que incluye la pluralidad de valores cuantificados (S7093), la pluralidad de valores de coeficientes pertenecientes a uno de una pluralidad de niveles, cada uno de los valores de coeficientes cuantificado en la cuantificación (S7092) utilizando un parámetro de cuantificación para el nivel al que pertenece el valor del coeficiente, el flujo de bits incluyendo primera información que indica un parámetro de cuantificación de referencia y una pluralidad de segunda información para calcular una pluralidad de parámetros de cuantificación para una pluralidad de niveles a partir del parámetro de cuantificación de referencia. (Traducción automática con Google Translate, sin valor legal)
Description
[0001] DESCRIPCIÓN
[0002] Método de codificación de datos tridimensionales, método de decodificación de datos tridimensionales, dispositivo de codificación de datos tridimensionales y dispositivo de decodificación de datos tridimensionalesCampo técnico
[0003] La presente divulgación se relaciona con un método de codificación de datos tridimensionales, un método de decodificación de datos tridimensionales, un dispositivo de codificación de datos tridimensionales y un dispositivo de decodificación de datos tridimensionales.
[0004] Antecedentes de la técnica
[0005] Se espera que dispositivos o servicios que utilizan datos tridimensionales encuentren un uso generalizado en una amplia variedad de campos, tales como visión por ordenador que permite operaciones autónomas de automóviles o robots, información de mapas, monitoreo, inspección de infraestructura y distribución de video. Los datos tridimensionales se obtienen mediante diversos medios que incluyen un sensor de distancia tal como un telémetro, así como una cámara estereoscópica y una combinación de una pluralidad de cámaras monoculares.
[0006] Los métodos de representación de datos tridimensionales incluyen un método conocido como esquema de nube de puntos que representa la forma de una estructura tridimensional mediante un grupo de puntos en un espacio tridimensional. En el esquema de nube de puntos, las posiciones y colores de un grupo de puntos se almacenan. Aunque se espera que la nube de puntos sea un método principal de representación de datos tridimensionales, una cantidad masiva de datos de un grupo de puntos requiere compresión de la cantidad de datos tridimensionales mediante codificación para acumulación y transmisión, como en el caso de una imagen en movimiento bidimensional (los ejemplos incluyen Grupo de Expertos en Imágenes en Movimiento 4 de Codificación de Video Avanzada (MPEG-4 AVC) y Codificación de Video de Alta Eficiencia (HEVC) estandarizados por MPEG).
[0007] Mientras tanto, la compresión de nube de puntos es soportada parcialmente por, por ejemplo, una biblioteca de código abierto (Biblioteca de Nube de Puntos) para procesamiento relacionado con nube de puntos. Además, se conoce una técnica para buscar y mostrar una instalación ubicada en los alrededores del vehículo (por ejemplo, véase PTL 1).
[0008] PTL 2 se relaciona con compresión y descompresión escalables de datos de nube de puntos. Por ejemplo, después de que un codificador utiliza una transformación tal como una transformación jerárquica adaptativa por región sobre atributos y/o residuales de predicción de puntos ocupados en datos de nube de puntos, el codificador separa coeficientes de transformación en particiones. Un tamaño de paso de cuantización puede depender de un parámetro de cuantización, cuyo valor se establece para una trama, mosaico, bloque y/u otra porción de datos de nube de puntos.
[0009] Lista de citas
[0010] Literatura de patentes
[0011] PTL 1: Publicación Internacional WO 2014/020663
[0012] PTL 2: US 2017/347122 A1
[0013] Sumario de la invención
[0014] Problema técnico
[0015] Ha existido una demanda de realizar apropiadamente codificación en codificación de datos tridimensionales. La presente divulgación tiene un objeto de proporcionar un método de codificación de datos tridimensionales, un método de decodificación de datos tridimensionales, un dispositivo de codificación de datos tridimensionales o un dispositivo de decodificación de datos tridimensionales que es capaz de realizar apropiadamente codificación.
[0016] Solución al problema
[0017] La invención está definida por las características de las reivindicaciones independientes anexas. La invención se describe adicionalmente en “Realización 13”. Las realizaciones restantes son solo para fines ilustrativos.
[0018] Efecto ventajoso de la invención
[0019] La presente divulgación puede proporcionar un método de codificación de datos tridimensionales, un método de decodificación de datos tridimensionales, un dispositivo de codificación de datos tridimensionales o un dispositivo de decodificación de datos tridimensionales que es capaz de realizar apropiadamente codificación.
[0020] Breve descripción de los dibujos
[0021] La FIG.1 es un diagrama que muestra la estructura de datos tridimensionales codificados de acuerdo con la Realización 1.
[0022] La FIG.2 es un diagrama que muestra un ejemplo de estructuras de predicción entre SPC que pertenecen a la capa más baja en un grupo de espacios (GOS) de acuerdo con la Realización 1.
[0023] La FIG.3 es un diagrama que muestra un ejemplo de estructuras de predicción entre capas de acuerdo con la Realización 1.
[0024] La FIG. 4 es un diagrama que muestra un ejemplo de orden de codificación de GOS de acuerdo con la Realización 1.
[0025] La FIG. 5 es un diagrama que muestra un ejemplo de orden de codificación de GOS de acuerdo con la Realización 1.
[0026] La FIG.6 es un diagrama de bloques de un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 1.
[0027] La FIG.7 es un diagrama de flujo de procesos de codificación de acuerdo con la Realización 1.
[0028] La FIG. 8 es un diagrama de bloques de un dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 1.
[0029] La FIG.9 es un diagrama de flujo de procesos de decodificación de acuerdo con la Realización 1.
[0030] La FIG.10 es un diagrama que muestra un ejemplo de metainformación de acuerdo con la Realización 1. La FIG. 11 es un diagrama que muestra una estructura de ejemplo de un mundo disperso (SWLD) de acuerdo con la Realización 2.
[0031] La FIG.12 es un diagrama que muestra operaciones de ejemplo realizadas por un servidor y un cliente de acuerdo con la Realización 2.
[0032] La FIG.13 es un diagrama que muestra operaciones de ejemplo realizadas por el servidor y un cliente de acuerdo con la Realización 2.
[0033] La FIG.14 es un diagrama que muestra operaciones de ejemplo realizadas por el servidor y los clientes de acuerdo con la Realización 2.
[0034] La FIG.15 es un diagrama que muestra operaciones de ejemplo realizadas por el servidor y los clientes de acuerdo con la Realización 2.
[0035] La FIG. 16 es un diagrama de bloques de un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 2.
[0036] La FIG.17 es un diagrama de flujo de procesos de codificación de acuerdo con la Realización 2.
[0037] La FIG. 18 es un diagrama de bloques de un dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 2.
[0038] La FIG.19 es un diagrama de flujo de procesos de decodificación de acuerdo con la Realización 2.
[0039] La FIG.20 es un diagrama que muestra una estructura de ejemplo de un mundo (WLD) de acuerdo con la Realización 2.
[0040] La FIG. 21 es un diagrama que muestra una estructura octree de ejemplo del WLD de acuerdo con la Realización 2.
[0041] La FIG. 22 es un diagrama que muestra una estructura de ejemplo de un SWLD de acuerdo con la Realización 2.
[0042] La FIG. 23 es un diagrama que muestra una estructura octree de ejemplo del SWLD de acuerdo con la Realización 2.
[0043] La FIG.24 es un diagrama de bloques de un dispositivo de creación de datos tridimensionales de acuerdo con la Realización 3.
[0044] La FIG. 25 es un diagrama de bloques de un dispositivo de transmisión de datos tridimensionales de acuerdo con la Realización 3.
[0045] La FIG.26 es un diagrama de bloques de un dispositivo de procesamiento de información tridimensional de acuerdo con la Realización 4.
[0046] La FIG.27 es un diagrama de bloques de un dispositivo de creación de datos tridimensionales de acuerdo con la Realización 5.
[0047] La FIG.28 es un diagrama que muestra una estructura de un sistema de acuerdo con la Realización 6. La FIG.29 es un diagrama de bloques de un dispositivo cliente de acuerdo con la Realización 6.
[0048] La FIG.30 es un diagrama de bloques de un servidor de acuerdo con la Realización 6.
[0049] La FIG.31 es un diagrama de flujo de un proceso de creación de datos tridimensionales realizado por el dispositivo cliente de acuerdo con la Realización 6.
[0050] La FIG.32 es un diagrama de flujo de un proceso de transmisión de información de sensor realizado por el dispositivo cliente de acuerdo con la Realización 6.
[0051] La FIG.33 es un diagrama de flujo de un proceso de creación de datos tridimensionales realizado por el servidor de acuerdo con la Realización 6.
[0052] La FIG.34 es un diagrama de flujo de un proceso de transmisión de mapas tridimensionales realizado por el servidor de acuerdo con la Realización 6.
[0053] La FIG. 35 es un diagrama que muestra una estructura de una variación del sistema de acuerdo con la Realización 6.
[0054] La FIG.36 es un diagrama que muestra una estructura del servidor y dispositivos cliente de acuerdo con la Realización 6.
[0055] La FIG. 37 es un diagrama de bloques de un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 7.
[0056] La FIG. 38 es un diagrama que muestra un ejemplo de un residual de predicción de acuerdo con la Realización 7.
[0057] La FIG.39 es un diagrama que muestra un ejemplo de un volumen de acuerdo con la Realización 7. La FIG.40 es un diagrama que muestra un ejemplo de una representación octree del volumen de acuerdo con la Realización 7.
[0058] La FIG.41 es un diagrama que muestra un ejemplo de secuencias de bits del volumen de acuerdo con la Realización 7.
[0059] La FIG.42 es un diagrama que muestra un ejemplo de una representación octree de un volumen de acuerdo con la Realización 7.
[0060] La FIG.43 es un diagrama que muestra un ejemplo del volumen de acuerdo con la Realización 7.
[0061] La FIG.44 es un diagrama para describir un proceso de predicción intra de acuerdo con la Realización 7. La FIG.45 es un diagrama para describir un proceso de rotación y traslación de acuerdo con la Realización 7.
[0062] La FIG.46 es un diagrama que muestra una sintaxis de ejemplo de una bandera RT e información RT de acuerdo con la Realización 7.
[0063] La FIG.47 es un diagrama para describir un proceso de predicción inter de acuerdo con la Realización 7. La FIG. 48 es un diagrama de bloques de un dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 7.
[0064] La FIG.49 es un diagrama de flujo de un proceso de codificación de datos tridimensionales realizado por el dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 7.
[0065] La FIG.50 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales realizado por el dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 7.
[0066] La FIG.51 es un diagrama que ilustra un ejemplo de puntos tridimensionales de acuerdo con la Realización 8.
[0067] La FIG.52 es un diagrama que ilustra un ejemplo de establecimiento de LoD de acuerdo con la Realización 8.
[0068] La FIG.53 es un diagrama que ilustra un ejemplo de establecimiento de LoD de acuerdo con la Realización 8.
[0069] La FIG. 54 es un diagrama que ilustra un ejemplo de información de atributos que va a ser usada para valores predictivos de acuerdo con la Realización 8.
[0070] La FIG. 55 es un diagrama que ilustra ejemplos de códigos exponential-Golomb de acuerdo con la Realización 8.
[0071] La FIG.56 es un diagrama que indica un proceso sobre códigos exponential-Golomb de acuerdo con la Realización 8.
[0072] La FIG.57 es un diagrama que indica un ejemplo de una sintaxis en encabezado de atributos de acuerdo con la Realización 8.
[0073] La FIG.58 es un diagrama que indica un ejemplo de una sintaxis en datos de atributos de acuerdo con la Realización 8.
[0074] La FIG.59 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con la Realización 8.
[0075] La FIG.60 es un diagrama de flujo de un proceso de codificación de información de atributos de acuerdo con la Realización 8.
[0076] La FIG.61 es un diagrama que indica procesamiento sobre códigos exponential-Golomb de acuerdo con la Realización 8.
[0077] La FIG.62 es un diagrama que indica un ejemplo de una tabla de búsqueda inversa que indica relaciones entre códigos restantes y los valores de los mismos de acuerdo con la Realización 8.
[0078] La FIG.63 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con la Realización 8.
[0079] La FIG.64 es un diagrama de flujo de un proceso de decodificación de información de atributos de acuerdo con la Realización 8.
[0080] La FIG. 65 es un diagrama de bloques de un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 8.
[0081] La FIG. 66 es un diagrama de bloques de un dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 8.
[0082] La FIG.67 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con la Realización 8.
[0083] La FIG.68 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con la Realización 8.
[0084] La FIG.69 es un diagrama que muestra un primer ejemplo de una tabla que representa valores predictivos calculados en modos de predicción de acuerdo con la Realización 9.
[0085] La FIG. 70 es un diagrama que muestra ejemplos de elementos de información de atributos (piezas de información de atributos) usados como los valores predictivos de acuerdo con la Realización 9.
[0086] La FIG.71 es un diagrama que muestra un segundo ejemplo de una tabla que representa valores predictivos calculados en los modos de predicción de acuerdo con la Realización 9.
[0087] La FIG.72 es un diagrama que muestra un tercer ejemplo de una tabla que representa valores predictivos calculados en los modos de predicción de acuerdo con la Realización 9.
[0088] La FIG.73 es un diagrama que muestra un cuarto ejemplo de una tabla que representa valores predictivos calculados en los modos de predicción de acuerdo con la Realización 9.
[0089] La FIG. 74 es un diagrama para describir la codificación de la información de atributos usando una Transformada Jerárquica Adaptativa por Región (RAHT) de acuerdo con la Realización 10.
[0090] La FIG.75 es un diagrama que muestra un ejemplo de establecimiento de una escala de cuantización para cada jerarquía de acuerdo con la Realización 10.
[0091] La FIG.76 es un diagrama que muestra un ejemplo de una primera secuencia de códigos y una segunda secuencia de códigos de acuerdo con la Realización 10.
[0092] La FIG. 77 es un diagrama que muestra un ejemplo de un código unario truncado de acuerdo con la Realización 10.
[0093] La FIG.78 es un diagrama para describir la conversión inversa de Haar de acuerdo con la Realización 10. La FIG.79 es un diagrama que muestra un ejemplo de sintaxis de la información de atributos de acuerdo con la Realización 10.
[0094] La FIG.80 es un diagrama que muestra un ejemplo de un coeficiente de codificación y ZeroCnt de acuerdo con la Realización 10.
[0095] La FIG.81 es un diagrama de flujo del procesamiento de codificación de datos tridimensionales de acuerdo con la Realización 10.
[0096] La FIG.82 es un diagrama de flujo del procesamiento de codificación de información de atributos de acuerdo con la Realización 10.
[0097] La FIG. 83 es un diagrama de flujo del procesamiento de codificación de coeficientes de codificación de acuerdo con la Realización 10.
[0098] La FIG. 84 es un diagrama de flujo del procesamiento de decodificación de datos tridimensionales de acuerdo con la Realización 10.
[0099] La FIG. 85 es un diagrama de flujo del procesamiento de decodificación de información de atributos de acuerdo con la Realización 10.
[0100] La FIG.86 es un diagrama de flujo del procesamiento de decodificación de coeficientes de codificación de acuerdo con la Realización 10.
[0101] La FIG. 87 es un diagrama de bloques de un codificador de información de atributos de acuerdo con la Realización 10.
[0102] La FIG.88 es un diagrama de bloques de un decodificador de información de atributos de acuerdo con la Realización 10.
[0103] La FIG.89 es un diagrama para describir un proceso realizado por un cuantizador y un cuantizador inverso de acuerdo con la Realización 11.
[0104] La FIG.90 es un diagrama para describir un valor predeterminado y un delta de cuantización de un valor de cuantización de acuerdo con la Realización 11.
[0105] La FIG.91 es un diagrama de bloques que ilustra una configuración de un primer codificador incluido en un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 11.
[0106] La FIG. 92 es un diagrama de bloques que ilustra una configuración de un divisor de acuerdo con la Realización 11.
[0107] La FIG. 93 es un diagrama de bloques que ilustra una configuración de un codificador de información geométrica y un codificador de información de atributos de acuerdo con la Realización 11.
[0108] La FIG.94 es un diagrama de bloques que ilustra una configuración de un primer decodificador de acuerdo con la Realización 11.
[0109] La FIG. 95 es un diagrama de bloques que ilustra una configuración de un decodificador de información geométrica y un decodificador de información de atributos de acuerdo con la Realización 11.
[0110] La FIG.96 es un diagrama de flujo que ilustra un ejemplo de un proceso relacionado con determinación de un valor de cuantización en la codificación de información geométrica o la codificación de información de atributos de acuerdo con la Realización 11.
[0111] La FIG.97 es un diagrama de flujo que ilustra un ejemplo de un proceso de decodificación de información geométrica e información de atributos de acuerdo con la Realización 11.
[0112] La FIG.98 es un diagrama para describir un primer ejemplo de un método de transmisión de un parámetro de cuantización de acuerdo con la Realización 11.
[0113] La FIG.99 es un diagrama para describir un segundo ejemplo del método de transmisión de un parámetro de cuantización de acuerdo con la Realización 11.
[0114] La FIG.100 es un diagrama para describir un tercer ejemplo del método de transmisión de un parámetro de cuantización de acuerdo con la Realización 11.
[0115] La FIG.101 es un diagrama de flujo de un proceso de codificación de datos de nube de puntos de acuerdo con la Realización 11.
[0116] La FIG.102 es un diagrama de flujo que ilustra un ejemplo de un proceso de determinación de un valor de QP y actualización de información adicional de acuerdo con la Realización 11.
[0117] La FIG.103 es un diagrama de flujo que ilustra un ejemplo de un proceso de codificación de acuerdo con la Realización 11.
[0118] La FIG.104 es un diagrama de flujo que ilustra un proceso de decodificación de datos de nube de puntos de acuerdo con la Realización 11.
[0119] La FIG.105 es un diagrama de flujo que ilustra un ejemplo de un proceso de obtención de valores de QP y decodificación de un valor de QP para una tajada o mosaico de acuerdo con la Realización 11.
[0120] La FIG.106 es un diagrama que ilustra un ejemplo de sintaxis de GPS de acuerdo con la Realización 11. La FIG.107 es un diagrama que ilustra un ejemplo de sintaxis de APS de acuerdo con la Realización 11. La FIG.108 es un diagrama que ilustra un ejemplo de sintaxis de un encabezado de información geométrica de acuerdo con la Realización 11.
[0121] La FIG.109 es un diagrama que ilustra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 11.
[0122] La FIG. 110 es un diagrama para describir otro ejemplo del método de transmisión de un parámetro de cuantización de acuerdo con la Realización 11.
[0123] La FIG. 111 es un diagrama para describir otro ejemplo del método de transmisión de un parámetro de cuantización de acuerdo con la Realización 11.
[0124] La FIG.112 es un diagrama para describir un noveno ejemplo del método de transmisión de un parámetro de cuantización de acuerdo con la Realización 11.
[0125] La FIG. 113 es un diagrama para describir un ejemplo de control de un valor de QP de acuerdo con la Realización 11.
[0126] La FIG.114 es un diagrama de flujo que ilustra un ejemplo de un método de determinación de un valor de QP basado en la calidad de un objeto de acuerdo con la Realización 11.
[0127] La FIG.115 es un diagrama de flujo que ilustra un ejemplo de un método de determinación de un valor de QP basado en un control de velocidad de bits de acuerdo con la Realización 11.
[0128] La FIG.116 es un diagrama de flujo que ilustra un proceso de codificación de acuerdo con la Realización 11.
[0129] La FIG.117 es un diagrama de flujo que ilustra un proceso de decodificación de acuerdo con la Realización 11.
[0130] La FIG. 118 es un diagrama para ilustrar un ejemplo de un método de transmisión de parámetros de cuantización de acuerdo con la Realización 12.
[0131] La FIG.119 es un diagrama que muestra un primer ejemplo de una sintaxis de APS y una sintaxis de un encabezado de información de atributos de acuerdo con la Realización 12.
[0132] La FIG. 120 es un diagrama que muestra un segundo ejemplo de la sintaxis de APS de acuerdo con la Realización 12.
[0133] La FIG.121 es un diagrama que muestra un segundo ejemplo de la sintaxis del encabezado de información de atributos de acuerdo con la Realización 12.
[0134] La FIG.122 es un diagrama que muestra una relación entre SPS, APS y el encabezado de información de atributos de acuerdo con la Realización 12.
[0135] La FIG.123 es un diagrama de flujo de un proceso de codificación de acuerdo con la Realización 12. La FIG.124 es un diagrama de flujo de un proceso de decodificación de acuerdo con la Realización 12. La FIG.125 es un diagrama de bloques que muestra una configuración de un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 13.
[0136] La FIG.126 es un diagrama de bloques que muestra una configuración de un dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 13.
[0137] La FIG. 127 es un diagrama que muestra un ejemplo del establecimiento de LoD de acuerdo con la Realización 13.
[0138] La FIG.128 es un diagrama que muestra un ejemplo de una estructura jerárquica de RAHT de acuerdo con la Realización 13.
[0139] La FIG. 129 es un diagrama de bloques de un dispositivo de codificación de datos tridimensionales de acuerdo con la Realización 13.
[0140] La FIG.130 es un diagrama de bloques de un divisor de acuerdo con la Realización 13.
[0141] La FIG.131 es un diagrama de bloques de un codificador de información de atributos de acuerdo con la Realización 13.
[0142] La FIG.132 es un diagrama de bloques de un dispositivo de decodificación de datos tridimensionales de acuerdo con la Realización 13.
[0143] La FIG.133 es un diagrama de bloques de un decodificador de información de atributos de acuerdo con la Realización 13.
[0144] La FIG.134 es un diagrama que muestra un ejemplo del establecimiento de un parámetro de cuantización en la división de mosaicos y la división de tajadas de acuerdo con la Realización 13.
[0145] La FIG.135 es un diagrama que muestra un ejemplo del establecimiento de un parámetro de cuantización de acuerdo con la Realización 13.
[0146] La FIG.136 es un diagrama que muestra un ejemplo del establecimiento de un parámetro de cuantización de acuerdo con la Realización 13.
[0147] La FIG. 137 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0148] La FIG. 138 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0149] La FIG.139 es un diagrama que muestra un ejemplo del establecimiento de un parámetro de cuantización de acuerdo con la Realización 13.
[0150] La FIG. 140 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0151] La FIG. 141 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0152] La FIG.142 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con la Realización 13.
[0153] La FIG.143 es un diagrama de flujo de un proceso de codificación de información de atributos de acuerdo con la Realización 13.
[0154] La FIG.144 es un diagrama de flujo de un proceso de determinación de ΔQP de acuerdo con la Realización 13.
[0155] La FIG.145 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con la Realización 13.
[0156] La FIG.146 es un diagrama de flujo de un proceso de decodificación de información de atributos de acuerdo con la Realización 13.
[0157] La FIG.147 es un diagrama de bloques de un codificador de información de atributos de acuerdo con la Realización 13.
[0158] La FIG.148 es un diagrama de bloques de un decodificador de información de atributos de acuerdo con la Realización 13.
[0159] La FIG.149 es un diagrama que muestra un ejemplo del establecimiento de un parámetro de cuantización de acuerdo con la Realización 13.
[0160] La FIG. 150 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0161] La FIG. 151 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0162] La FIG.152 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con la Realización 13.
[0163] La FIG.153 es un diagrama de flujo de un proceso de codificación de información de atributos de acuerdo con la Realización 13.
[0164] La FIG.154 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con la Realización 13.
[0165] La FIG.155 es un diagrama de flujo de un proceso de decodificación de información de atributos de acuerdo con la Realización 13.
[0166] La FIG.156 es un diagrama de bloques de un codificador de información de atributos de acuerdo con la Realización 13.
[0167] La FIG.157 es un diagrama de bloques de un decodificador de información de atributos de acuerdo con la Realización 13.
[0168] La FIG. 158 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos de acuerdo con la Realización 13.
[0169] La FIG.159 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con la Realización 13.
[0170] La FIG.160 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con la Realización 13.
[0171] La FIG. 161 es un diagrama que muestra un ejemplo de la generación de capas LoD de acuerdo con la Realización 14.
[0172] La FIG.162 es un diagrama que muestra un ejemplo de la división de capas de acuerdo con la Realización 14.
[0173] La FIG.163 es un diagrama que muestra un ejemplo de la división de capas de acuerdo con la Realización 14.
[0174] La FIG.164 es un diagrama que muestra un ejemplo de la división de capas de acuerdo con la Realización 14.
[0175] La FIG.165 es un diagrama que muestra un ejemplo de la división de capas de acuerdo con la Realización 14.
[0176] La FIG.166 es un diagrama que muestra un ejemplo de la división de capas de acuerdo con la Realización 14.
[0177] La FIG.167 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con la Realización 14.
[0178] La FIG.168 es un diagrama de flujo de un proceso de codificación de información de atributos de acuerdo con la Realización 14.
[0179] La FIG.169 es un diagrama de flujo de un proceso de establecimiento de LoD de acuerdo con la Realización 14.
[0180] La FIG.170 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con la Realización 14.
[0181] La FIG.171 es un diagrama de flujo de un proceso de decodificación de información de atributos de acuerdo con la Realización 14.
[0182] La FIG.172 es un diagrama de bloques de un codificador de información de atributos de acuerdo con la Realización 14.
[0183] La FIG.173 es un diagrama de bloques de un decodificador de información de atributos de acuerdo con la Realización 14.
[0184] Descripción de realizaciones ejemplares
[0185] Un método de codificación de datos tridimensionales de acuerdo con un aspecto de la presente divulgación comprende: calcular valores de coeficiente a partir de piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos; cuantizar los valores de coeficiente individualmente para generar valores cuantizados; y generar un flujo de bits que incluye los valores cuantizados, en donde cada uno de los valores de coeficiente pertenece a cualquiera de las capas, en la cuantización, cada uno de los valores de coeficiente es cuantizado usando un parámetro de cuantización para una capa a la que pertenece el valor de coeficiente entre las capas, y el flujo de bits incluye primera información y piezas de segunda información, indicando la primera información un parámetro de cuantización de referencia, siendo las piezas de segunda información para calcular parámetros de cuantización para las capas a partir del parámetro de cuantización de referencia.
[0186] Con dicha configuración, de acuerdo con el método de codificación de datos tridimensionales, el parámetro de cuantización puede cambiarse para cada capa, y, por lo tanto, la codificación puede realizarse apropiadamente. Además, de acuerdo con el método de codificación de datos tridimensionales, la primera información que indica un parámetro de cuantización de referencia y la segunda información para calcular una pluralidad de parámetros de cuantización a partir del parámetro de cuantización de referencia son codificadas, y por lo tanto, la eficiencia de codificación puede mejorarse.
[0187] Por ejemplo, es posible que cada una de las piezas de segunda información indique una diferencia entre el parámetro de cuantización de referencia y un parámetro de cuantización para una correspondiente de las capas entre los parámetros de cuantización.
[0188] Por ejemplo, en un ejemplo no cubierto por las reivindicaciones, también es posible que el flujo de bits incluya adicionalmente una primera bandera que indica si las piezas de segunda información están incluidas o no en el flujo de bits.
[0189] Por ejemplo, es adicionalmente posible que el flujo de bits incluya adicionalmente tercera información que indica un número total de las piezas de segunda información incluidas en el flujo de bits.
[0190] Por ejemplo, es aún adicionalmente posible que cada uno de los puntos tridimensionales sea clasificado en cualquiera de las capas de acuerdo con información geométrica del punto tridimensional.
[0191] Por ejemplo, es aún adicionalmente posible que los valores de coeficiente sean generados clasificando cada una de las piezas de información de atributos en uno de un componente de frecuencia más alta y un componente de frecuencia más baja para ser clasificados en las capas.
[0192] Un método de decodificación de datos tridimensionales de acuerdo con otro aspecto de la presente divulgación comprende: calcular parámetros de cuantización para capas, usando (i) primera información que indica un parámetro de cuantización de referencia y (ii) piezas de segunda información para calcular los parámetros de cuantización para las capas a partir del parámetro de cuantización de referencia, estando la primera información y las piezas de segunda información incluidas en un flujo de bits; cuantizar inversamente cada uno de los valores cuantizados incluidos en el flujo de bits, usando un parámetro de cuantización para una capa a la que pertenece el valor cuantizado entre los parámetros de cuantización calculados en el cálculo, para generar valores de coeficiente; y calcular, a partir de los valores de coeficiente generados en la cuantización inversa, piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos.
[0193] Con dicha configuración, de acuerdo con el método de decodificación de datos tridimensionales, el parámetro de cuantización puede cambiarse para cada capa, y por lo tanto, la decodificación puede realizarse apropiadamente. Además, de acuerdo con el método de decodificación de datos tridimensionales, el flujo de bits puede ser decodificado apropiadamente que es codificado con una eficiencia de codificación mejorada usando la primera información que indica un parámetro de cuantización de referencia y la pluralidad de piezas de segunda información para calcular una pluralidad de parámetros de cuantización a partir del parámetro de cuantización de referencia.
[0194] Por ejemplo, es posible que cada una de las piezas de segunda información indique una diferencia entre el parámetro de cuantización de referencia y un parámetro de cuantización para una correspondiente de las capas entre los parámetros de cuantización.
[0195] Por ejemplo, en un ejemplo no cubierto por las reivindicaciones, también es posible que el flujo de bits incluya adicionalmente una primera bandera que indica si las piezas de segunda información están incluidas o no en el flujo de bits.
[0196] Por ejemplo, es adicionalmente posible que el flujo de bits incluya adicionalmente tercera información que indica un número total de las piezas de segunda información incluidas en el flujo de bits.
[0197] Por ejemplo, es aún adicionalmente posible que cada uno de los puntos tridimensionales sea clasificado en cualquiera de las capas de acuerdo con información geométrica del punto tridimensional.
[0198] Por ejemplo, es aún adicionalmente posible que los valores de coeficiente sean generados clasificando cada una de las piezas de información de atributos en uno de un componente de frecuencia más alta y un componente de frecuencia más baja para ser clasificados en las capas.
[0199] Un dispositivo de codificación de datos tridimensionales de acuerdo con aún otro aspecto de la presente divulgación comprende: un procesador; y memoria, en donde usando la memoria, el procesador: calcula valores de coeficiente a partir de piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos; cuantiza los valores de coeficiente individualmente para generar valores cuantizados; y genera un flujo de bits que incluye los valores cuantizados, en donde cada uno de los valores de coeficiente pertenece a cualquiera de las capas, en la cuantización, cada uno de los valores de coeficiente es cuantizado usando un parámetro de cuantización para una capa a la que pertenece el valor de coeficiente entre las capas, y el flujo de bits incluye primera información y piezas de segunda información, indicando la primera información un parámetro de cuantización de referencia, siendo las piezas de segunda información para calcular parámetros de cuantización para las capas a partir del parámetro de cuantización de referencia, siendo los parámetros de cuantización cada uno el parámetro de cuantización.
[0200] Con dicha configuración, el dispositivo de codificación de datos tridimensionales puede cambiar el parámetro de cuantización para cada capa, y por lo tanto puede realizar apropiadamente la codificación. Además, dado que el dispositivo de codificación de datos tridimensionales codifica la primera información que indica un parámetro de cuantización de referencia y la pluralidad de piezas de segunda información para calcular una pluralidad de parámetros de cuantización a partir del parámetro de cuantización de referencia, la eficiencia de codificación puede mejorarse.
[0201] Un dispositivo de decodificación de datos tridimensionales de acuerdo con aún otro aspecto de la presente divulgación comprende: un procesador; y memoria, en donde usando la memoria, el procesador: calcula parámetros de cuantización para capas, usando (i) primera información que indica un parámetro de cuantización de referencia y (ii) piezas de segunda información para calcular los parámetros de cuantización para las capas a partir del parámetro de cuantización de referencia, estando la primera información y las piezas de segunda información incluidas en un flujo de bits; cuantiza inversamente cada uno de valores cuantizados incluidos en el flujo de bits, usando un parámetro de cuantización para una capa a la que pertenece el valor cuantizado entre los parámetros de cuantización calculados en el cálculo, para generar valores de coeficiente; y calcula, a partir de los valores de coeficiente generados en la cuantización inversa, piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos.
[0202] Con dicha configuración, el dispositivo de decodificación de datos tridimensionales puede cambiar el parámetro de cuantización para cada capa, y por lo tanto puede realizar apropiadamente la decodificación. Además, el dispositivo de decodificación de datos tridimensionales puede decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación mejorada usando la primera información que indica un parámetro de cuantización de referencia y la pluralidad de piezas de segunda información para calcular una pluralidad de parámetros de cuantización a partir del parámetro de cuantización de referencia.
[0203] Debe observarse que estos aspectos generales o específicos pueden implementarse como un sistema, un método, un circuito integrado, un programa informático o un medio de registro legible por ordenador tal como una Memoria de Solo Lectura de Disco Compacto (CD-ROM), o pueden implementarse como cualquier combinación de un sistema, un método, un circuito integrado, un programa informático y un medio de registro.
[0204] Lo siguiente describe realizaciones con referencia a los dibujos. Debe observarse que las siguientes realizaciones indican realizaciones ejemplares de la presente divulgación. Los valores numéricos, formas, materiales, elementos constituyentes, la disposición y conexión de los elementos constituyentes, etapas, el orden de procesamiento de las etapas, etc. indicados en las siguientes realizaciones son meros ejemplos, y por lo tanto, no están destinados a limitar la presente divulgación. De los elementos constituyentes descritos en las siguientes realizaciones, elementos constituyentes no mencionados en cualquiera de las reivindicaciones independientes que indican los conceptos más amplios serán descritos como elementos constituyentes opcionales.
[0205] Realización 1
[0206] Primero, se describirá la estructura de datos de datos tridimensionales codificados (en adelante también denominados datos codificados) de acuerdo con la presente realización. La FIG.1 es un diagrama que muestra la estructura de datos tridimensionales codificados de acuerdo con la presente realización.
[0207] En la presente realización, un espacio tridimensional se divide en espacios (SPC), los cuales corresponden a imágenes en codificación de imágenes en movimiento, y los datos tridimensionales son codificados sobre una base SPC por SPC. Cada SPC se divide adicionalmente en volúmenes (VLM), los cuales corresponden a macrobloques, etc. en codificación de imágenes en movimiento, y las predicciones y transformaciones se realizan sobre una base VLM por VLM. Cada volumen incluye una pluralidad de vóxeles (VXL), siendo cada uno una unidad mínima en la cual se asocian coordenadas de posición. Debe observarse que la predicción es un proceso de generar datos tridimensionales predictivos análogos a una unidad de procesamiento actual mediante referencia a otra unidad de procesamiento, y codificar un diferencial entre los datos tridimensionales predictivos y la unidad de procesamiento actual, como en el caso de predicciones realizadas sobre imágenes bidimensionales. Dicha predicción incluye no solo predicción espacial en la cual se hace referencia a otra unidad de predicción correspondiente al mismo tiempo, sino también predicción temporal en la cual se hace referencia a una unidad de predicción correspondiente a un tiempo diferente.
[0208] Al codificar un espacio tridimensional representado por datos de grupos de puntos tal como una nube de puntos, por ejemplo, el dispositivo de codificación de datos tridimensionales (en adelante también denominado dispositivo de codificación) codifica los puntos en el grupo de puntos o puntos incluidos en los respectivos vóxeles de manera colectiva, de acuerdo con un tamaño de vóxel. Vóxeles más finos permiten una representación altamente precisa de la forma tridimensional de un grupo de puntos, mientras que vóxeles más grandes permiten una representación aproximada de la forma tridimensional de un grupo de puntos.
[0209] Debe observarse que lo siguiente describe el caso en donde los datos tridimensionales son una nube de puntos, pero los datos tridimensionales no están limitados a una nube de puntos, y por lo tanto, pueden emplearse datos tridimensionales de cualquier formato.
[0210] También debe observarse que pueden usarse vóxeles con una estructura jerárquica. En dicho caso, cuando la jerarquía incluye n niveles, puede indicarse secuencialmente si un punto de muestreo está incluido en el nivel n-1-ésimo o niveles inferiores (niveles por debajo del nivel n-ésimo). Por ejemplo, cuando solo el nivel n-ésimo es decodificado, y el nivel n-1-ésimo o niveles inferiores incluyen un punto de muestreo, el nivel n-ésimo puede decodificarse bajo la suposición de que un punto de muestreo está incluido en el centro de un vóxel en el nivel n-ésimo.
[0211] Además, el dispositivo de codificación obtiene datos de grupos de puntos, usando, por ejemplo, un sensor de distancia, una cámara estereoscópica, una cámara monocular, un sensor giroscópico o un sensor inercial. Como en el caso de codificación de imágenes en movimiento, cada SPC es clasificado en una de al menos las tres estructuras de predicción que incluyen: SPC intra (I-SPC), el cual es decodificable individualmente; SPC predictivo (P-SPC) capaz de solo una referencia unidireccional; y SPC bidireccional (B-SPC) capaz de referencias bidireccionales. Cada SPC incluye dos tipos de información de tiempo: tiempo de decodificación y tiempo de visualización.
[0212] Además, como se muestra en la FIG.1, una unidad de procesamiento que incluye una pluralidad de SPC es un grupo de espacios (GOS), el cual es una unidad de acceso aleatorio. Además, una unidad de procesamiento que incluye una pluralidad de GOS es un mundo (WLD).
[0213] La región espacial ocupada por cada mundo está asociada con una posición absoluta en la tierra, mediante el uso de, por ejemplo, GPS, o información de latitud y longitud. Dicha información de posición se almacena como metainformación. Debe observarse que la metainformación puede estar incluida en datos codificados, o puede transmitirse separadamente de los datos codificados.
[0214] Además, dentro de un GOS, todos los SPC pueden ser tridimensionalmente adyacentes entre sí, o puede haber un SPC que no sea tridimensionalmente adyacente a otro SPC.
[0215] Debe observarse que lo siguiente también describe procesos tales como codificación, decodificación y referencia que van a realizarse sobre datos tridimensionales incluidos en unidades de procesamiento tales como GOS, SPC y VLM, simplemente como realizar codificación/codificar, decodificación/decodificar, hacer referencia a, etc. sobre una unidad de procesamiento. También debe observarse que los datos tridimensionales incluidos en una unidad de procesamiento incluyen, por ejemplo, al menos un par de una posición espacial tal como coordenadas tridimensionales y un valor de atributo tal como información de color.
[0216] A continuación, se describirán las estructuras de predicción entre SPC en un GOS. Una pluralidad de SPC en el mismo GOS o una pluralidad de VLM en el mismo SPC ocupan espacios mutuamente diferentes, mientras tienen la misma información de tiempo (el tiempo de decodificación y el tiempo de visualización).
[0217] Un SPC en un GOS que viene primero en el orden de decodificación es un I-SPC. Los GOS vienen en dos tipos: GOS cerrado y GOS abierto. Un GOS cerrado es un GOS en el cual todos los SPC en el GOS son decodificables cuando la decodificación comienza desde el primer I-SPC. Mientras tanto, un GOS abierto es un GOS en el cual se hace referencia a un GOS diferente en uno o más SPC que preceden al primer I-SPC en el GOS en el tiempo de visualización, y por lo tanto no puede decodificarse individualmente.
[0218] Debe observarse que en el caso de datos codificados de información de mapas, por ejemplo, un WLD algunas veces se decodifica en la dirección hacia atrás, que es opuesta al orden de codificación, y por lo tanto la reproducción hacia atrás es difícil cuando los GOS son interdependientes. En dicho caso, se usa básicamente un GOS cerrado.
[0219] Cada GOS tiene una estructura de capas en dirección de altura, y los SPC se codifican o decodifican secuencialmente desde SPC en la capa inferior.
[0220] La FIG.2 es un diagrama que muestra un ejemplo de estructuras de predicción entre SPC que pertenecen a la capa más baja en un GOS. La FIG.3 es un diagrama que muestra un ejemplo de estructuras de predicción entre capas.
[0221] Un GOS incluye al menos un I-SPC. De los objetos en un espacio tridimensional, tales como una persona, un animal, un automóvil, una bicicleta, una señal y un edificio que sirve como punto de referencia, un objeto de tamaño pequeño es especialmente efectivo cuando se codifica como un I-SPC. Al decodificar un GOS a bajo rendimiento o a alta velocidad, por ejemplo, el dispositivo de decodificación de datos tridimensionales (en adelante también denominado dispositivo de decodificación) decodifica solo I-SPC en el GOS.
[0222] El dispositivo de codificación también puede cambiar el intervalo de codificación o la frecuencia de aparición de I-SPC, dependiendo del grado de dispersión y densidad de los objetos en un WLD.
[0223] En la estructura mostrada en la FIG.3, el dispositivo de codificación o el dispositivo de decodificación codifica o decodifica una pluralidad de capas secuencialmente desde la capa inferior (capa 1). Esto aumenta la prioridad de datos sobre el suelo y su vecindad, que implican una mayor cantidad de información, cuando, por ejemplo, se trata de un automóvil de conducción autónoma.
[0224] Con respecto a datos codificados usados para un dron, por ejemplo, la codificación o decodificación puede realizarse secuencialmente desde SPC en la capa superior en un GOS en dirección de altura.
[0225] El dispositivo de codificación o el dispositivo de decodificación también puede codificar o decodificar una pluralidad de capas de una manera en que el dispositivo de decodificación puede tener primero una comprensión aproximada de un GOS, y luego la resolución se aumenta gradualmente. El dispositivo de codificación o el dispositivo de decodificación puede realizar codificación o decodificación en el orden de capas 3, 8, 1, 9…, por ejemplo.
[0226] A continuación, se describirá el manejo de objetos estáticos y objetos dinámicos.
[0227] Un espacio tridimensional incluye escenas u objetos inmóviles tales como un edificio y una carretera (en adelante denominados colectivamente objetos estáticos), y objetos con movimiento tales como un automóvil y una persona (en adelante denominados colectivamente objetos dinámicos). La detección de objetos se realiza separadamente mediante, por ejemplo, la extracción de puntos clave a partir de datos de nube de puntos, o a partir de video de una cámara tal como una cámara estereoscópica. En esta descripción, se describirá un método de ejemplo de codificación de un objeto dinámico.
[0228] Un primer método es un método en el cual un objeto estático y un objeto dinámico se codifican sin distinción. Un segundo método es un método en el cual se hace una distinción entre un objeto estático y un objeto dinámico sobre la base de información de identificación.
[0229] Por ejemplo, un GOS se usa como una unidad de identificación. En dicho caso, se hace una distinción entre un GOS que incluye SPC que constituyen un objeto estático y un GOS que incluye SPC que constituyen un
objeto dinámico, sobre la base de información de identificación almacenada en los datos codificados o almacenada separadamente de los datos codificados.
[0230] Alternativamente, un SPC puede usarse como una unidad de identificación. En dicho caso, se hace una distinción entre un SPC que incluye VLM que constituyen un objeto estático y un SPC que incluye VLM que constituyen un objeto dinámico, sobre la base de la información de identificación descrita de este modo. Alternativamente, un VLM o un VXL puede usarse como una unidad de identificación. En dicho caso, se hace una distinción entre un VLM o un VXL que incluye un objeto estático y un VLM o un VXL que incluye un objeto dinámico, sobre la base de la información de identificación descrita de este modo.
[0231] El dispositivo de codificación también puede codificar un objeto dinámico como al menos un VLM o SPC, y puede codificar un VLM o un SPC que incluye un objeto estático y un SPC que incluye un objeto dinámico como GOS mutuamente diferentes. Cuando el tamaño de GOS es variable dependiendo del tamaño de un objeto dinámico, el dispositivo de codificación almacena separadamente el tamaño de GOS como metainformación. El dispositivo de codificación también puede codificar un objeto estático y un objeto dinámico separadamente entre sí, y puede superponer el objeto dinámico sobre un mundo constituido por objetos estáticos. En dicho caso, el objeto dinámico está constituido por al menos un SPC, y cada SPC está asociado con al menos un SPC que constituye el objeto estático sobre el cual se va a superponer cada SPC. Debe observarse que un objeto dinámico puede representarse no por SPC sino por al menos un VLM o VXL.
[0232] El dispositivo de codificación también puede codificar un objeto estático y un objeto dinámico como flujos mutuamente diferentes.
[0233] El dispositivo de codificación también puede generar un GOS que incluye al menos un SPC que constituye un objeto dinámico. El dispositivo de codificación puede establecer adicionalmente el tamaño de un GOS que incluye un objeto dinámico (GOS_M) y el tamaño de un GOS que incluye un objeto estático correspondiente a la región espacial de GOS_M al mismo tamaño (de modo que la misma región espacial esté ocupada). Esto permite que la superposición se realice sobre una base GOS por GOS.
[0234] SPC incluidos en otro GOS codificado pueden ser referidos en un P-SPC o un B-SPC que constituye un objeto dinámico. En el caso en donde la posición de un objeto dinámico cambia temporalmente, y el mismo objeto dinámico se codifica como un objeto en un GOS correspondiente a un tiempo diferente, hacer referencia a SPC a través de GOS es efectivo en términos de tasa de compresión.
[0235] El primer método y el segundo método pueden seleccionarse de acuerdo con el uso previsto de datos codificados. Cuando los datos tridimensionales codificados se usan como un mapa, por ejemplo, se desea que un objeto dinámico se separe, y por lo tanto el dispositivo de codificación usa el segundo método. Mientras tanto, el dispositivo de codificación usa el primer método cuando no se requiere la separación de un objeto dinámico tal como en el caso en donde se codifican datos tridimensionales de un evento tal como un concierto y un evento deportivo.
[0236] El tiempo de decodificación y el tiempo de visualización de un GOS o un SPC pueden almacenarse en datos codificados o como metainformación. Todos los objetos estáticos pueden tener la misma información de tiempo. En dicho caso, el dispositivo de decodificación puede determinar el tiempo de decodificación y el tiempo de visualización reales. Alternativamente, un valor diferente puede asignarse a cada GOS o SPC como el tiempo de decodificación, y el mismo valor puede asignarse como el tiempo de visualización. Además, como en el caso del modelo de decodificador en codificación de imágenes en movimiento tal como Decodificador de Referencia Hipotético (HRD) compatible con HEVC, puede emplearse un modelo que garantiza que un decodificador pueda realizar decodificación sin fallar teniendo un búfer de un tamaño predeterminado y leyendo un flujo de bits a una tasa de bits predeterminada de acuerdo con los tiempos de decodificación.
[0237] A continuación, se describirá la topología de GOS en un mundo. Las coordenadas del espacio tridimensional en un mundo se representan por los tres ejes de coordenadas (eje x, eje y y eje z) que son ortogonales entre sí. Una regla predeterminada establecida para el orden de codificación de GOS permite que la codificación se realice de modo que GOS espacialmente adyacentes sean contiguos en los datos codificados. En un ejemplo mostrado en la FIG.4, por ejemplo, GOS en los planos x y z se codifican sucesivamente. Después de completar la codificación de todos los GOS en ciertos planos x y z, se actualiza el valor del eje y. Dicho de otra manera, el mundo se expande en la dirección del eje y a medida que progresa la codificación. Los números de índice de GOS se establecen de acuerdo con el orden de codificación.
[0238] Aquí, los espacios tridimensionales en los mundos respectivos están previamente asociados uno a uno con coordenadas geográficas absolutas tales como coordenadas GPS o coordenadas de latitud/longitud. Alternativamente, cada espacio tridimensional puede representarse como una posición relativa a una posición de referencia previamente establecida. Las direcciones del eje x, el eje y y el eje z en el espacio tridimensional se representan por vectores direccionales que se determinan sobre la base de las latitudes y las longitudes, etc. Dichos vectores direccionales se almacenan junto con los datos codificados como metainformación.
[0239] Los GOS tienen un tamaño fijo, y el dispositivo de codificación almacena dicho tamaño como metainformación. El tamaño de GOS puede cambiarse dependiendo de, por ejemplo, si es un área urbana o no, o si está dentro o fuera de una habitación. Dicho de otra manera, el tamaño de GOS puede cambiarse de acuerdo con la cantidad o los atributos de objetos con valores de información. Alternativamente, en el mismo mundo, el dispositivo de codificación puede cambiar adaptativamente el tamaño de GOS o el intervalo entre I-SPC en GOS de acuerdo con la densidad de objetos, etc. Por ejemplo, el dispositivo de codificación establece el tamaño de GOS más pequeño y el intervalo entre I-SPC en GOS más corto, a medida que la densidad de objetos es más alta.
[0240] En un ejemplo mostrado en la FIG.5, para permitir acceso aleatorio con una granularidad más fina, un GOS con una alta densidad de objetos se particiona en las regiones de los GOS tercero a décimo. Debe observarse que los GOS séptimo a décimo están ubicados detrás de los GOS tercero a sexto.
[0241] A continuación, se describirán la estructura y el flujo de operación del dispositivo de codificación de datos tridimensionales de acuerdo con la presente realización. La FIG.6 es un diagrama de bloques del dispositivo de codificación de datos tridimensionales 100 de acuerdo con la presente realización. La FIG.7 es un diagrama de flujo de una operación de ejemplo realizada por el dispositivo de codificación de datos tridimensionales 100. El dispositivo de codificación de datos tridimensionales 100 mostrado en la FIG. 6 codifica datos tridimensionales 111, generando de ese modo datos tridimensionales codificados 112. Dicho dispositivo de codificación de datos tridimensionales 100 incluye el obtenedor 101, el determinador de región de codificación 102, el divisor 103 y el codificador 104.
[0242] Como se muestra en la FIG.7, primero, el obtenedor 101 obtiene datos tridimensionales 111, que son datos de grupos de puntos (S101).
[0243] A continuación, el determinador de región de codificación 102 determina una región actual para codificación de entre regiones espaciales correspondientes a los datos de grupos de puntos obtenidos (S102). Por ejemplo, de acuerdo con la posición de un usuario o un vehículo, el determinador de región de codificación 102 determina, como la región actual, una región espacial alrededor de dicha posición.
[0244] A continuación, el divisor 103 divide los datos de grupos de puntos incluidos en la región actual en unidades de procesamiento. Las unidades de procesamiento aquí significan unidades tales como GOS y SPC descritas anteriormente. La región actual aquí corresponde a, por ejemplo, un mundo descrito anteriormente. Más específicamente, el divisor 103 divide los datos de grupos de puntos en unidades de procesamiento sobre la base de un tamaño de GOS predeterminado, o la presencia/ausencia/tamaño de un objeto dinámico (S103). El divisor 103 determina adicionalmente la posición inicial del SPC que viene primero en el orden de codificación en cada GOS.
[0245] A continuación, el codificador 104 codifica secuencialmente una pluralidad de SPC en cada GOS, generando de ese modo datos tridimensionales codificados 112 (S104).
[0246] Debe observarse que aunque aquí se describe un ejemplo en el cual la región actual se divide en GOS y SPC, después de lo cual se codifica cada GOS, las etapas de procesamiento no están limitadas a este orden. Por ejemplo, pueden emplearse etapas en las cuales se determina la estructura de un solo GOS, a lo cual sigue la codificación de dicho GOS, y luego se determina la estructura del GOS subsiguiente.
[0247] Como se ha descrito de este modo, el dispositivo de codificación de datos tridimensionales 100 codifica datos tridimensionales 111, generando de ese modo datos tridimensionales codificados 112. Más específicamente, el dispositivo de codificación de datos tridimensionales 100 divide datos tridimensionales en primeras unidades de procesamiento (GOS), siendo cada una, una unidad de acceso aleatorio y estando asociada con coordenadas tridimensionales, divide cada una de las primeras unidades de procesamiento (GOS) en segundas unidades de procesamiento (SPC), y divide cada una de las segundas unidades de procesamiento (SPC) en terceras unidades de procesamiento (VLM). Cada una de las terceras unidades de procesamiento (VLM) incluye al menos un vóxel (VXL), que es la unidad mínima en la cual se asocia información de posición. A continuación, el dispositivo de codificación de datos tridimensionales 100 codifica cada una de las primeras unidades de procesamiento (GOS), generando de ese modo datos tridimensionales codificados 112. Más específicamente, el dispositivo de codificación de datos tridimensionales 100 codifica cada una de las segundas unidades de procesamiento (SPC) en cada una de las primeras unidades de procesamiento (GOS). El dispositivo de codificación de datos tridimensionales 100 codifica adicionalmente cada una de las terceras unidades de procesamiento (VLM) en cada una de las segundas unidades de procesamiento (SPC).
[0248] Cuando una primera unidad de procesamiento actual (GOS) es un GOS cerrado, por ejemplo, el dispositivo de codificación de datos tridimensionales 100 codifica una segunda unidad de procesamiento actual (SPC) incluida en dicha primera unidad de procesamiento actual (GOS) haciendo referencia a otra segunda unidad de procesamiento (SPC) incluida en la primera unidad de procesamiento actual (GOS). Dicho de otra manera, el dispositivo de codificación de datos tridimensionales 100 no hace referencia a ninguna segunda unidad de
procesamiento (SPC) incluida en una primera unidad de procesamiento (GOS) que es diferente de la primera unidad de procesamiento actual (GOS).
[0249] Mientras tanto, cuando una primera unidad de procesamiento actual (GOS) es un GOS abierto, el dispositivo de codificación de datos tridimensionales 100 codifica una segunda unidad de procesamiento actual (SPC) incluida en dicha primera unidad de procesamiento actual (GOS) haciendo referencia a otra segunda unidad de procesamiento (SPC) incluida en la primera unidad de procesamiento actual (GOS) o una segunda unidad de procesamiento (SPC) incluida en una primera unidad de procesamiento (GOS) que es diferente de la primera unidad de procesamiento actual (GOS).
[0250] Además, el dispositivo de codificación de datos tridimensionales 100 selecciona, como el tipo de una segunda unidad de procesamiento actual (SPC), uno de los siguientes: un primer tipo (I-SPC) en el cual no se hace referencia a otra segunda unidad de procesamiento (SPC); un segundo tipo (P-SPC) en el cual se hace referencia a otra única segunda unidad de procesamiento (SPC); y un tercer tipo en el cual se hace referencia a otras dos segundas unidades de procesamiento (SPC). El dispositivo de codificación de datos tridimensionales 100 codifica la segunda unidad de procesamiento actual (SPC) de acuerdo con el tipo seleccionado.
[0251] A continuación, se describirán la estructura y el flujo de operación del dispositivo de decodificación de datos tridimensionales de acuerdo con la presente realización. La FIG.8 es un diagrama de bloques del dispositivo de decodificación de datos tridimensionales 200 de acuerdo con la presente realización. La FIG. 9 es un diagrama de flujo de una operación de ejemplo realizada por el dispositivo de decodificación de datos tridimensionales 200.
[0252] El dispositivo de decodificación de datos tridimensionales 200 mostrado en la FIG. 8 decodifica datos tridimensionales codificados 211, generando de ese modo datos tridimensionales decodificados 212. Los datos tridimensionales codificados 211 aquí son, por ejemplo, datos tridimensionales codificados 112 generados por el dispositivo de codificación de datos tridimensionales 100. Dicho dispositivo de decodificación de datos tridimensionales 200 incluye el obtenedor 201, el determinador de GOS de inicio de decodificación 202, el determinador de SPC de decodificación 203 y el decodificador 204.
[0253] Primero, el obtenedor 201 obtiene datos tridimensionales codificados 211 (S201). A continuación, el determinador de GOS de inicio de decodificación 202 determina un GOS actual para decodificación (S202). Más específicamente, el determinador de GOS de inicio de decodificación 202 hace referencia a metainformación almacenada en datos tridimensionales codificados 211 o almacenada separadamente de los datos tridimensionales codificados para determinar, como el GOS actual, un GOS que incluye un SPC correspondiente a la posición espacial, el objeto o el tiempo desde el cual ha de comenzar la decodificación. A continuación, el determinador de SPC de decodificación 203 determina el(los) tipo(s) (I, P y/o B) de SPC que van a decodificarse en el GOS (S203). Por ejemplo, el determinador de SPC de decodificación 203 determina si (1) decodificar solo I-SPC, (2) decodificar I-SPC y P-SPC, o (3) decodificar SPC de todos los tipos. Debe observarse que la presente etapa puede no realizarse, cuando el(los) tipo(s) de SPC que van a decodificarse se determinan previamente tal como cuando todos los SPC se determinan previamente para ser decodificados. A continuación, el decodificador 204 obtiene una ubicación de dirección dentro de datos tridimensionales codificados 211 desde la cual comienza un SPC que viene primero en el GOS en el orden de decodificación (el mismo que el orden de codificación). El decodificador 204 obtiene los datos codificados del primer SPC desde la ubicación de dirección, y decodifica secuencialmente los SPC desde dicho primer SPC (S204). Debe observarse que la ubicación de dirección se almacena en la metainformación, etc.
[0254] El dispositivo de decodificación de datos tridimensionales 200 decodifica datos tridimensionales decodificados 212 como se ha descrito de este modo. Más específicamente, el dispositivo de decodificación de datos tridimensionales 200 decodifica cada dato tridimensional codificado 211 de las primeras unidades de procesamiento (GOS), siendo cada una, una unidad de acceso aleatorio y estando asociada con coordenadas tridimensionales, generando de ese modo datos tridimensionales decodificados 212 de las primeras unidades de procesamiento (GOS). Aún más específicamente, el dispositivo de decodificación de datos tridimensionales 200 decodifica cada una de las segundas unidades de procesamiento (SPC) en cada una de las primeras unidades de procesamiento (GOS). El dispositivo de decodificación de datos tridimensionales 200 decodifica adicionalmente cada una de las terceras unidades de procesamiento (VLM) en cada una de las segundas unidades de procesamiento (SPC).
[0255] Lo siguiente describe metainformación para acceso aleatorio. Dicha metainformación es generada por el dispositivo de codificación de datos tridimensionales 100, e incluida en datos tridimensionales codificados 112 (211).
[0256] En el acceso aleatorio convencional para una imagen en movimiento bidimensional, la decodificación comienza desde la primera trama en una unidad de acceso aleatorio que está cerca de un tiempo especificado. Mientras
tanto, además de tiempos, se supone que el acceso aleatorio a espacios (coordenadas, objetos, etc.) se realiza en un mundo.
[0257] Para permitir acceso aleatorio a al menos tres elementos de coordenadas, objetos y tiempos, se preparan tablas que asocian los elementos respectivos con los números de índice de GOS. Además, los números de índice de GOS están asociados con las direcciones de los respectivos primeros I-SPC en los GOS. La FIG.10 es un diagrama que muestra tablas de ejemplo incluidas en la metainformación. Debe observarse que no se requiere usar todas las tablas mostradas en la FIG.10, y por lo tanto se usa al menos una de las tablas. Lo siguiente describe un ejemplo en el cual el acceso aleatorio se realiza desde coordenadas como un punto de partida. Para acceder a las coordenadas (x2, y2 y z2), primero se hace referencia a la tabla coordenadas-GOS, que indica que el punto correspondiente a las coordenadas (x2, y2 y z2) está incluido en el segundo GOS. A continuación, se hace referencia a la tabla GOS-dirección, que indica que la dirección del primer I-SPC en el segundo GOS es addr(2). Como tal, el decodificador 204 obtiene datos desde esta dirección para comenzar la decodificación.
[0258] Debe observarse que las direcciones pueden ser direcciones lógicas o direcciones físicas de un HDD o una memoria. Alternativamente, puede usarse información que identifica tajadas de archivo en lugar de direcciones. Las tajadas de archivo son, por ejemplo, unidades obtenidas segmentando al menos un GOS, etc.
[0259] Cuando un objeto se extiende a través de una pluralidad de GOS, la tabla objeto-GOS puede mostrar una pluralidad de GOS a los que pertenece dicho objeto. Cuando dicha pluralidad de GOS son GOS cerrados, el dispositivo de codificación y el dispositivo de decodificación pueden realizar codificación o decodificación en paralelo. Mientras tanto, cuando dicha pluralidad de GOS son GOS abiertos, se logra una eficiencia de compresión más alta al hacer referencia la pluralidad de GOS entre sí.
[0260] Los objetos de ejemplo incluyen una persona, un animal, un automóvil, una bicicleta, una señal y un edificio que sirve como punto de referencia. Por ejemplo, el dispositivo de codificación de datos tridimensionales 100 extrae puntos clave específicos de un objeto a partir de una nube de puntos tridimensional, etc., al codificar un mundo, y detecta el objeto sobre la base de dichos puntos clave para establecer el objeto detectado como un punto de acceso aleatorio.
[0261] Como se ha descrito de este modo, el dispositivo de codificación de datos tridimensionales 100 genera primera información que indica una pluralidad de primeras unidades de procesamiento (GOS) y las coordenadas tridimensionales asociadas con las respectivas primeras unidades de procesamiento (GOS). Los datos tridimensionales codificados 112 (211) incluyen dicha primera información. La primera información indica adicionalmente al menos uno de objetos, tiempos y ubicaciones de almacenamiento de datos que están asociados con las respectivas primeras unidades de procesamiento (GOS).
[0262] El dispositivo de decodificación de datos tridimensionales 200 obtiene la primera información a partir de datos tridimensionales codificados 211. Usando dicha primera información, el dispositivo de decodificación de datos tridimensionales 200 identifica datos tridimensionales codificados 211 de la primera unidad de procesamiento que corresponde a las coordenadas tridimensionales, objeto o tiempo especificados, y decodifica datos tridimensionales codificados 211.
[0263] Lo siguiente describe un ejemplo de otra metainformación. Además de la metainformación para acceso aleatorio, el dispositivo de codificación de datos tridimensionales 100 también puede generar y almacenar metainformación como se describe a continuación, y el dispositivo de decodificación de datos tridimensionales 200 puede usar dicha metainformación en el momento de la decodificación.
[0264] Cuando se usan datos tridimensionales como información de mapas, por ejemplo, se define un perfil de acuerdo con el uso previsto, e información que indica dicho perfil puede incluirse en metainformación. Por ejemplo, se define un perfil para un área urbana o suburbana, o para un objeto volador, y el tamaño máximo o mínimo, etc. de un mundo, un SPC o un VLM, etc. se define en cada perfil. Por ejemplo, se requiere información más detallada para un área urbana que para un área suburbana, y por lo tanto el tamaño mínimo de VLM se establece a pequeño.
[0265] La metainformación puede incluir valores de etiqueta que indican tipos de objeto. Cada uno de dichos valores de etiqueta está asociado con VLM, SPC o GOS que constituyen un objeto. Por ejemplo, un valor de etiqueta puede establecerse para cada tipo de objeto de una manera, por ejemplo, que el valor de etiqueta “0” indica “persona”, el valor de etiqueta “1” indica “automóvil”, y el valor de etiqueta “2” indica “señal”. Alternativamente, cuando un tipo de objeto es difícil de juzgar, o no se requiere dicho juicio, puede usarse un valor de etiqueta que indica el tamaño o el atributo que indica, por ejemplo, si un objeto es un objeto dinámico o un objeto estático.
[0266] La metainformación también puede incluir información que indica un intervalo de la región espacial ocupada por un mundo.
[0267] La metainformación también puede almacenar el tamaño de SPC o VXL como información de encabezado común a todo el flujo de los datos codificados o a una pluralidad de SPC, tales como SPC en un GOS.
[0268] La metainformación también puede incluir información de identificación sobre un sensor de distancia o una cámara que se ha usado para generar una nube de puntos, o información que indica la precisión posicional de un grupo de puntos en la nube de puntos.
[0269] La metainformación también puede incluir información que indica si un mundo está hecho solo de objetos estáticos o incluye un objeto dinámico.
[0270] Lo siguiente describe variaciones de la presente realización.
[0271] El dispositivo de codificación o el dispositivo de decodificación puede codificar o decodificar dos o más SPC o GOS mutuamente diferentes en paralelo. Los GOS que van a codificarse o decodificarse en paralelo pueden determinarse sobre la base de metainformación, etc. que indica las posiciones espaciales de los GOS.
[0272] Cuando se usan datos tridimensionales como un mapa espacial para uso por un automóvil o un objeto volador, etc. en desplazamiento, o para creación de dicho mapa espacial, por ejemplo, el dispositivo de codificación o el dispositivo de decodificación puede codificar o decodificar GOS o SPC incluidos en un espacio que se identifica sobre la base de información GPS, la información de ruta, la magnificación de zoom, etc.
[0273] El dispositivo de decodificación también puede comenzar la decodificación secuencialmente desde un espacio que está cerca de la autoubicación o la ruta de desplazamiento. El dispositivo de codificación o el dispositivo de decodificación puede dar una prioridad más baja a un espacio distante de la autoubicación o la ruta de desplazamiento que la prioridad de un espacio cercano para codificar o decodificar dicho lugar distante. “Dar una prioridad más baja” significa aquí, por ejemplo, bajar la prioridad en la secuencia de procesamiento, disminuir la resolución (aplicar decimación en el procesamiento), o bajar la calidad de imagen (aumentar la eficiencia de codificación estableciendo, por ejemplo, el paso de cuantización más grande).
[0274] Al decodificar datos codificados que están codificados jerárquicamente en un espacio, el dispositivo de decodificación puede decodificar solo la capa inferior en la jerarquía.
[0275] El dispositivo de decodificación también puede comenzar la decodificación preferencialmente desde la capa inferior de la jerarquía de acuerdo con la magnificación de zoom o el uso previsto del mapa.
[0276] Para estimación de autoubicación o reconocimiento de objetos, etc. involucrado en la conducción autónoma de un automóvil o un robot, el dispositivo de codificación o el dispositivo de decodificación puede codificar o decodificar regiones a una resolución más baja, excepto una región que es inferior a o está a una altura especificada desde el suelo (la región que va a reconocerse).
[0277] El dispositivo de codificación también puede codificar nubes de puntos que representan las formas espaciales de un interior de habitación y un exterior de habitación separadamente. Por ejemplo, la separación de un GOS que representa un interior de habitación (GOS interior) y un GOS que representa un exterior de habitación (GOS exterior) permite que el dispositivo de decodificación seleccione un GOS que va a decodificarse de acuerdo con una ubicación de punto de vista, cuando se usan los datos codificados.
[0278] El dispositivo de codificación también puede codificar un GOS interior y un GOS exterior que tienen coordenadas cercanas de modo que dichos GOS lleguen adyacentes entre sí en un flujo codificado. Por ejemplo, el dispositivo de codificación asocia los identificadores de dichos GOS entre sí, y almacena información que indica los identificadores asociados en la metainformación que está almacenada en el flujo codificado o almacenada separadamente. Esto permite que el dispositivo de decodificación haga referencia a la información en la metainformación para identificar un GOS interior y un GOS exterior que tienen coordenadas cercanas.
[0279] El dispositivo de codificación también puede cambiar el tamaño de GOS o el tamaño de SPC dependiendo de si un GOS es un GOS interior o un GOS exterior. Por ejemplo, el dispositivo de codificación establece el tamaño de un GOS interior más pequeño que el tamaño de un GOS exterior. El dispositivo de codificación también puede cambiar la precisión de extraer puntos clave a partir de una nube de puntos, o la precisión de detectar objetos, por ejemplo, dependiendo de si un GOS es un GOS interior o un GOS exterior.
[0280] El dispositivo de codificación también puede añadir, a datos codificados, información mediante la cual el dispositivo de decodificación muestra objetos con una distinción entre un objeto dinámico y un objeto estático. Esto permite que el dispositivo de decodificación muestre un objeto dinámico junto con, por ejemplo, un cuadro rojo o letras para explicación. Debe observarse que el dispositivo de decodificación puede mostrar solo un cuadro rojo o letras para explicación, en lugar de un objeto dinámico. El dispositivo de decodificación también puede mostrar tipos de objeto más particulares. Por ejemplo, puede usarse un cuadro rojo para un automóvil, y puede usarse un cuadro amarillo para una persona.
[0281] El dispositivo de codificación o el dispositivo de decodificación también puede determinar si codificar o decodificar un objeto dinámico y un objeto estático como un SPC o GOS diferente, de acuerdo con, por ejemplo, la frecuencia de aparición de objetos dinámicos o una relación entre objetos estáticos y objetos dinámicos. Por ejemplo, cuando la frecuencia de aparición o la relación de objetos dinámicos supera un umbral, se acepta un SPC o un GOS que incluye una mezcla de un objeto dinámico y un objeto estático, mientras que cuando la frecuencia de aparición o la relación de objetos dinámicos está por debajo de un umbral, no se acepta un SPC o GOS que incluye una mezcla de un objeto dinámico y un objeto estático.
[0282] Al detectar un objeto dinámico no a partir de una nube de puntos sino a partir de información de imagen bidimensional de una cámara, el dispositivo de codificación puede obtener separadamente información para identificar un resultado de detección (cuadro o letras) y la posición de objeto, y codificar estos elementos de información como parte de los datos tridimensionales codificados. En dicho caso, el dispositivo de decodificación superpone información auxiliar (cuadro o letras) que indica el objeto dinámico sobre un resultado de decodificar un objeto estático para mostrarlo.
[0283] El dispositivo de codificación también puede cambiar la dispersión y densidad de VXL o VLM en un SPC de acuerdo con el grado de complejidad de la forma de un objeto estático. Por ejemplo, el dispositivo de codificación establece VXL o VLM a una densidad más alta a medida que la forma de un objeto estático es más compleja. El dispositivo de codificación puede determinar adicionalmente un paso de cuantización, etc. para cuantizar posiciones espaciales o información de color de acuerdo con la dispersión y densidad de VXL o VLM. Por ejemplo, el dispositivo de codificación establece el paso de cuantización más pequeño a medida que la densidad de VXL o VLM es más alta.
[0284] Como se describió anteriormente, el dispositivo de codificación o el dispositivo de decodificación de acuerdo con la presente realización codifica o decodifica un espacio sobre una base SPC por SPC que incluye información de coordenadas.
[0285] Además, el dispositivo de codificación y el dispositivo de decodificación realizan codificación o decodificación sobre una base volumen por volumen en un SPC. Cada volumen incluye un vóxel, que es la unidad mínima en la cual se asocia información de posición.
[0286] Además, usando una tabla que asocia los elementos respectivos de información espacial que incluye coordenadas, objetos y tiempos con GOS o usando una tabla que asocia estos elementos entre sí, el dispositivo de codificación y el dispositivo de decodificación asocian cualesquiera de los elementos entre sí para realizar codificación o decodificación. El dispositivo de decodificación usa los valores de los elementos seleccionados para determinar las coordenadas, e identifica un volumen, un vóxel o un SPC a partir de dichas coordenadas para decodificar un SPC que incluye dicho volumen o vóxel, o el SPC identificado.
[0287] Además, el dispositivo de codificación determina un volumen, un vóxel o un SPC que es seleccionable de acuerdo con los elementos, mediante la extracción de puntos clave y reconocimiento de objetos, y codifica el volumen, vóxel o SPC determinado, como un volumen, un vóxel o un SPC al cual es posible acceso aleatorio. Los SPC se clasifican en tres tipos: I-SPC que es codificable o decodificable individualmente; P-SPC que es codificado o decodificado haciendo referencia a cualquiera de los SPC procesados; y B-SPC que es codificado o decodificado haciendo referencia a cualesquiera dos de los SPC procesados.
[0288] Al menos un volumen corresponde a un objeto estático o un objeto dinámico. Un SPC que incluye un objeto estático y un SPC que incluye un objeto dinámico se codifican o decodifican como GOS mutuamente diferentes. Dicho de otra manera, un SPC que incluye un objeto estático y un SPC que incluye un objeto dinámico se asignan a GOS diferentes.
[0289] Los objetos dinámicos se codifican o decodifican sobre una base objeto por objeto, y están asociados con al menos un SPC que incluye un objeto estático. Dicho de otra manera, una pluralidad de objetos dinámicos se codifica individualmente, y los datos codificados obtenidos de los objetos dinámicos se asocian con un SPC que incluye un objeto estático.
[0290] El dispositivo de codificación y el dispositivo de decodificación dan una prioridad aumentada a I-SPC en un GOS para realizar codificación o decodificación. Por ejemplo, el dispositivo de codificación realiza codificación de una manera que evita la degradación de I-SPC (de una manera que permite que los datos tridimensionales originales se reproduzcan con una fidelidad más alta después de ser decodificados). El dispositivo de decodificación decodifica, por ejemplo, solo I-SPC.
[0291] El dispositivo de codificación puede cambiar la frecuencia de uso de I-SPC dependiendo de la dispersión y densidad o el número (cantidad) de los objetos en un mundo para realizar codificación. Dicho de otra manera, el dispositivo de codificación cambia la frecuencia de selección de I-SPC dependiendo del número o la dispersión y densidad de los objetos incluidos en los datos tridimensionales. Por ejemplo, el dispositivo de codificación usa I-SPC a una frecuencia más alta a medida que la densidad de los objetos en un mundo es más alta.
[0292] El dispositivo de codificación también establece puntos de acceso aleatorio sobre una base GOS por GOS, y almacena información que indica las regiones espaciales correspondientes a los GOS en la información de encabezado.
[0293] El dispositivo de codificación usa, por ejemplo, un valor predeterminado como el tamaño espacial de un GOS. Debe observarse que el dispositivo de codificación puede cambiar el tamaño de GOS dependiendo del número (cantidad) o la dispersión y densidad de objetos u objetos dinámicos. Por ejemplo, el dispositivo de codificación establece el tamaño espacial de un GOS más pequeño a medida que la densidad de objetos u objetos dinámicos es más alta o el número de objetos u objetos dinámicos es mayor.
[0294] Además, cada SPC o volumen incluye un grupo de puntos clave que se deriva mediante el uso de información obtenida por un sensor tal como un sensor de profundidad, un sensor giroscópico o un sensor de cámara. Las coordenadas de los puntos clave se establecen en las posiciones centrales de los respectivos vóxeles. Además, vóxeles más finos permiten información de posición altamente precisa.
[0295] El grupo de puntos clave se deriva mediante el uso de una pluralidad de imágenes. Una pluralidad de imágenes incluye al menos dos tipos de información de tiempo: la información de tiempo real y la misma información de tiempo común a una pluralidad de imágenes que están asociadas con SPC (por ejemplo, el tiempo de codificación usado para control de velocidad de bits, etc.).
[0296] Además, la codificación o decodificación se realiza sobre una base GOS por GOS que incluye al menos un SPC.
[0297] El dispositivo de codificación y el dispositivo de decodificación predicen P-SPC o B-SPC en un GOS actual haciendo referencia a SPC en un GOS procesado.
[0298] Alternativamente, el dispositivo de codificación y el dispositivo de decodificación predicen P-SPC o B-SPC en un GOS actual, usando los SPC procesados en el GOS actual, sin hacer referencia a un GOS diferente. Además, el dispositivo de codificación y el dispositivo de decodificación transmiten o reciben un flujo codificado sobre una base mundo por mundo que incluye al menos un GOS.
[0299] Además, un GOS tiene una estructura de capas en una dirección al menos en un mundo, y el dispositivo de codificación y el dispositivo de decodificación comienzan a codificar o decodificar desde la capa inferior. Por ejemplo, un GOS accesible aleatoriamente pertenece a la capa más baja. Un GOS que pertenece a la misma capa o una capa inferior se refiere en un GOS que pertenece a una capa superior. Dicho de otra manera, un GOS se divide espacialmente en una dirección predeterminada por adelantado para tener una pluralidad de capas, cada una que incluye al menos un SPC. El dispositivo de codificación y el dispositivo de decodificación codifican o decodifican cada SPC haciendo referencia a un SPC incluido en la misma capa que cada SPC o un SPC incluido en una capa inferior a la de cada SPC.
[0300] Además, el dispositivo de codificación y el dispositivo de decodificación codifican o decodifican sucesivamente GOS sobre una base mundo por mundo que incluye dichos GOS. Al hacerlo, el dispositivo de codificación y el dispositivo de decodificación escriben o leen información que indica el orden (dirección) de codificación o decodificación como metadatos. Dicho de otra manera, los datos codificados incluyen información que indica el orden de codificación de una pluralidad de GOS.
[0301] El dispositivo de codificación y el dispositivo de decodificación también codifican o decodifican en paralelo dos o más SPC o GOS mutuamente diferentes.
[0302] Además, el dispositivo de codificación y el dispositivo de decodificación codifican o decodifican la información espacial (coordenadas, tamaño, etc.) en un SPC o un GOS.
[0303] El dispositivo de codificación y el dispositivo de decodificación codifican o decodifican SPC o GOS incluidos en un espacio identificado que se identifica sobre la base de información externa sobre la autoubicación o/y el tamaño de región, tal como información GPS, información de ruta o magnificación.
[0304] El dispositivo de codificación o el dispositivo de decodificación da una prioridad más baja a un espacio distante de la autoubicación que la prioridad de un espacio cercano para realizar codificación o decodificación.
[0305] El dispositivo de codificación establece una dirección en una de las direcciones en un mundo, de acuerdo con la magnificación o el uso previsto, para codificar un GOS que tiene una estructura de capas en dicha dirección. Además, el dispositivo de decodificación decodifica un GOS que tiene una estructura de capas en una de las direcciones en un mundo que ha sido establecida de acuerdo con la magnificación o el uso previsto, preferencialmente desde la capa inferior.
[0306] El dispositivo de codificación cambia la precisión de extraer puntos clave, la precisión de reconocer objetos, o el tamaño de regiones espaciales, etc. incluidas en un SPC, dependiendo de si un objeto es un objeto interior o un objeto exterior. Debe observarse que el dispositivo de codificación y el dispositivo de decodificación
codifican o decodifican un GOS interior y un GOS exterior que tienen coordenadas cercanas de una manera en que estos GOS llegan adyacentes entre sí en un mundo, y asocian sus identificadores entre sí para codificación y decodificación.
[0307] Realización 2
[0308] Cuando se usan datos codificados de una nube de puntos en un dispositivo o servicio real, es deseable que la información necesaria se transmita/reciba de acuerdo con el uso previsto para reducir el ancho de banda de red. Sin embargo, no ha habido dicha funcionalidad en la estructura de codificación de datos tridimensionales, ni un método de codificación para la misma.
[0309] La presente realización describe un método de codificación de datos tridimensionales y un dispositivo de codificación de datos tridimensionales para proporcionar la funcionalidad de transmitir/recibir solo información necesaria en datos codificados de una nube de puntos tridimensional de acuerdo con el uso previsto, así como un método de decodificación de datos tridimensionales y un dispositivo de decodificación de datos tridimensionales para decodificar dichos datos codificados.
[0310] Un vóxel (VXL) con una característica mayor que o igual a una cantidad dada se define como un vóxel de característica (FVXL), y un mundo (WLD) constituido por FVXL se define como un mundo disperso (SWLD). La FIG. 11 es un diagrama que muestra estructuras de ejemplo de un mundo disperso y un mundo. Un SWLD incluye: FGOS, siendo cada uno un GOS constituido por FVXL; FSPC, siendo cada uno un SPC constituido por FVXL; y FVLM, siendo cada uno un VLM constituido por FVXL. La estructura de datos y la estructura de predicción de un FGOS, un FSPC y un FVLM pueden ser las mismas que las de un GOS, un SPC y un VLM. Una característica representa la información de posición tridimensional sobre un VXL o la información de luz visible sobre la posición de un VXL. Se detecta un gran número de características especialmente en una esquina, un borde, etc. de un objeto tridimensional. Más específicamente, dicha característica es una característica tridimensional o una característica de luz visible como se describe a continuación, pero puede ser cualquier característica que represente la información de posición, luminancia o color, etc. sobre un VXL. Se usan como características tridimensionales características de firma de histogramas de orientaciones (SHOT), características de histogramas de características de puntos (PFH) o característica de características de pares de puntos (PPF).
[0311] Las características SHOT se obtienen dividiendo la periferia de un VXL, y calculando un producto interno del punto de referencia y el vector normal de cada región dividida para representar el resultado del cálculo como un histograma. Las características SHOT se caracterizan por un gran número de dimensiones y una representación de características de alto nivel.
[0312] Las características PFH se obtienen seleccionando un gran número de pares de dos puntos en la vecindad de un VXL, y calculando el vector normal, etc. a partir de cada par de dos puntos para representar el resultado del cálculo como un histograma. Las características PFH son características de histograma, y por lo tanto se caracterizan por robustez frente a un cierto grado de perturbación y también por una representación de características de alto nivel.
[0313] Las características PPF se obtienen usando un vector normal, etc. para cada dos puntos de VXL. Las características PPF, para las cuales se usan todos los VXL, tienen robustez frente a oclusión.
[0314] Se usan como características de luz visible la transformación de características invariantes a escala (SIFT), las características robustas aceleradas (SURF), o el histograma de gradientes orientados (HOG), etc. que usan información sobre una imagen tal como información de gradiente de luminancia.
[0315] Un SWLD se genera calculando las características descritas anteriormente de los respectivos VXL en un WLD para extraer FVXL. Aquí, el SWLD puede actualizarse cada vez que el WLD se actualiza, o puede actualizarse regularmente después del transcurso de un cierto período de tiempo, independientemente del momento en que el WLD se actualiza.
[0316] Puede generarse un SWLD para cada tipo de características. Por ejemplo, pueden generarse diferentes SWLD para los respectivos tipos de características, tales como SWLD1 basado en características SHOT y SWLD2 basado en características SIFT de modo que los SWLD se usen selectivamente de acuerdo con el uso previsto. Además, la característica calculada de cada FVXL puede mantenerse en cada FVXL como información de característica.
[0317] A continuación, se describirá el uso de un mundo disperso (SWLD). Un SWLD incluye solo vóxeles de característica (FVXL), y por lo tanto su tamaño de datos es generalmente menor que el de un WLD que incluye todos los VXL.
[0318] En una aplicación que utiliza características para un determinado propósito, el uso de información sobre un SWLD en lugar de un WLD reduce el tiempo requerido para leer datos desde un disco duro, así como el ancho de banda y el tiempo requeridos para la transferencia de datos a través de una red. Por ejemplo, un WLD y un SWLD se mantienen en un servidor como información de mapas de modo que la información de mapas que va a enviarse se selecciona entre el WLD y el SWLD de acuerdo con una solicitud de un cliente. Esto reduce el ancho de banda de red y el tiempo requerido para la transferencia de datos. A continuación se describirán ejemplos más específicos.
[0319] La FIG.12 y la FIG.13 son diagramas que muestran ejemplos de uso de un SWLD y un WLD. Como muestra la FIG.12, cuando el cliente 1, que es un dispositivo montado en vehículo, requiere información de mapas para usarla para determinación de autoubicación, el cliente 1 envía al servidor una solicitud para obtener datos de mapa para estimación de autoubicación (S301). El servidor envía al cliente 1 el SWLD en respuesta a la solicitud de obtención (S302). El cliente 1 usa el SWLD recibido para determinar la autoubicación (S303). Al hacerlo, el cliente 1 obtiene información de VXL sobre la periferia del cliente 1 mediante diversos medios que incluyen un sensor de distancia tal como un telémetro, así como una cámara estereoscópica y una combinación de una pluralidad de cámaras monoculares. El cliente 1 estima luego la información de autoubicación a partir de la información de VXL obtenida y el SWLD. Aquí, la información de autoubicación incluye información de posición tridimensional, orientación, etc. del cliente 1.
[0320] Como muestra la FIG.13, cuando el cliente 2, que es un dispositivo montado en vehículo, requiere información de mapas para usarla para representar un mapa tal como un mapa tridimensional, el cliente 2 envía al servidor una solicitud para obtener datos de mapa para representación de mapas (S311). El servidor envía al cliente 2 el WLD en respuesta a la solicitud de obtención (S312). El cliente 2 usa el WLD recibido para representar un mapa (S313). Al hacerlo, el cliente 2 usa, por ejemplo, una imagen que el cliente 2 ha capturado mediante una cámara de luz visible, etc. y el WLD obtenido del servidor para crear una imagen de representación, y representa dicha imagen creada en una pantalla de un sistema de navegación para automóvil, etc.
[0321] Como se describió anteriormente, el servidor envía a un cliente un SWLD cuando se requieren principalmente las características de los respectivos VXL tal como en el caso de estimación de autoubicación, y envía a un cliente un WLD cuando se requiere información detallada de VXL tal como en el caso de representación de mapas. Esto permite un envío/recepción eficiente de datos de mapa.
[0322] Debe observarse que un cliente puede juzgar por sí mismo cuál de un SWLD y un WLD es necesario, y solicitar al servidor que envíe un SWLD o un WLD. Además, el servidor puede juzgar cuál de un SWLD y un WLD enviar de acuerdo con el estado del cliente o una red.
[0323] A continuación, se describirá un método de conmutación del envío/recepción entre un mundo disperso (SWLD) y un mundo (WLD).
[0324] La recepción de un WLD o un SWLD puede conmutarse de acuerdo con el ancho de banda de red. La FIG.14 es un diagrama que muestra una operación de ejemplo en dicho caso. Por ejemplo, cuando se usa una red de baja velocidad que limita el ancho de banda de red utilizable, tal como en un entorno de Evolución de Largo Plazo (LTE), un cliente accede al servidor a través de una red de baja velocidad (S321), y obtiene el SWLD del servidor como información de mapas (S322). Mientras tanto, cuando se usa una red de alta velocidad que tiene un ancho de banda de red adecuadamente amplio, tal como en un entorno WiFi, un cliente accede al servidor a través de una red de alta velocidad (S323), y obtiene el WLD del servidor (S324). Esto permite que el cliente obtenga información de mapas apropiada de acuerdo con el ancho de banda de red que dicho cliente está usando.
[0325] Más específicamente, un cliente recibe el SWLD a través de una red LTE cuando está en exteriores, y obtiene el WLD a través de una red WiFi cuando está en interiores tal como en una instalación. Esto permite que el cliente obtenga información de mapas más detallada sobre el entorno interior.
[0326] Como se describió anteriormente, un cliente puede solicitar un WLD o un SWLD de acuerdo con el ancho de banda de una red que dicho cliente está usando. Alternativamente, el cliente puede enviar al servidor información que indica el ancho de banda de una red que dicho cliente está usando, y el servidor puede enviar al cliente datos (el WLD o el SWLD) adecuados para dicho cliente de acuerdo con la información. Alternativamente, el servidor puede identificar el ancho de banda de red que el cliente está usando, y enviar al cliente datos (el WLD o el SWLD) adecuados para dicho cliente.
[0327] Además, la recepción de un WLD o un SWLD puede conmutarse de acuerdo con la velocidad de desplazamiento. La FIG.15 es un diagrama que muestra una operación de ejemplo en dicho caso. Por ejemplo, cuando se desplaza a alta velocidad (S331), un cliente recibe el SWLD del servidor (S332). Mientras tanto, cuando se desplaza a baja velocidad (S333), el cliente recibe el WLD del servidor (S334). Esto permite que el cliente obtenga información de mapas adecuada para la velocidad, mientras reduce el ancho de banda de red. Más específicamente, cuando se desplaza por una autopista, el cliente recibe el SWLD con una pequeña cantidad de datos, lo que permite la actualización de información de mapas aproximada a una velocidad
apropiada. Mientras tanto, cuando se desplaza por una carretera general, el cliente recibe el WLD, lo que permite la obtención de información de mapas más detallada.
[0328] Como se describió anteriormente, el cliente puede solicitar al servidor un WLD o un SWLD de acuerdo con la velocidad de desplazamiento de dicho cliente. Alternativamente, el cliente puede enviar al servidor información que indica la velocidad de desplazamiento de dicho cliente, y el servidor puede enviar al cliente datos (el WLD o el SWLD) adecuados para dicho cliente de acuerdo con la información. Alternativamente, el servidor puede identificar la velocidad de desplazamiento del cliente para enviar datos (el WLD o el SWLD) adecuados para dicho cliente.
[0329] Además, el cliente puede obtener, del servidor, primero un SWLD, a partir del cual el cliente puede obtener un WLD de una región importante. Por ejemplo, al obtener información de mapas, el cliente primero obtiene un SWLD para información de mapas aproximada, a partir del cual el cliente se limita a una región en la que características tales como edificios, señales o personas aparecen con alta frecuencia de modo que posteriormente el cliente puede obtener un WLD de dicha región limitada. Esto permite que el cliente obtenga información detallada sobre una región necesaria, mientras reduce la cantidad de datos recibidos del servidor. El servidor también puede crear a partir de un WLD diferentes SWLD para los respectivos objetos, y el cliente puede recibir SWLD de acuerdo con el uso previsto. Esto reduce el ancho de banda de red. Por ejemplo, el servidor reconoce personas o automóviles en un WLD por adelantado, y crea un SWLD de personas y un SWLD de automóviles. El cliente, cuando desea obtener información sobre personas alrededor del cliente, recibe el SWLD de personas, y cuando desea obtener información sobre automóviles, recibe el SWLD de automóviles. Dichos tipos de SWLD pueden distinguirse mediante información (bandera, o tipo, etc.) añadida al encabezado, etc.
[0330] A continuación, se describirán la estructura y el flujo de operación del dispositivo de codificación de datos tridimensionales (por ejemplo, un servidor) de acuerdo con la presente realización. La FIG.16 es un diagrama de bloques del dispositivo de codificación de datos tridimensionales 400 de acuerdo con la presente realización. La FIG. 17 es un diagrama de flujo de procesos de codificación de datos tridimensionales realizados por el dispositivo de codificación de datos tridimensionales 400.
[0331] El dispositivo de codificación de datos tridimensionales 400 mostrado en la FIG. 16 codifica datos tridimensionales de entrada 411, generando de ese modo datos tridimensionales codificados 413 y datos tridimensionales codificados 414, siendo cada uno un flujo codificado. Aquí, los datos tridimensionales codificados 413 son datos tridimensionales codificados correspondientes a un WLD, y los datos tridimensionales codificados 414 son datos tridimensionales codificados correspondientes a un SWLD. Dicho dispositivo de codificación de datos tridimensionales 400 incluye el obtenedor 401, el determinador de región de codificación 402, el extractor de SWLD 403, el codificador de WLD 404 y el codificador de SWLD 405. Primero, como muestra la FIG.17, el obtenedor 401 obtiene datos tridimensionales de entrada 411, que son datos de grupos de puntos en un espacio tridimensional (S401).
[0332] A continuación, el determinador de región de codificación 402 determina una región espacial actual para codificación sobre la base de una región espacial en la que están presentes los datos de nube de puntos (S402). A continuación, el extractor de SWLD 403 define la región espacial actual como un WLD, y calcula la característica a partir de cada VXL incluido en el WLD. Luego, el extractor de SWLD 403 extrae VXL que tienen una cantidad de características mayor que o igual a un umbral predeterminado, define los VXL extraídos como FVXL, y añade dichos FVXL a un SWLD, generando de ese modo datos tridimensionales extraídos 412 (S403). Dicho de otra manera, los datos tridimensionales extraídos 412 que tienen una cantidad de características mayor que o igual al umbral se extraen de los datos tridimensionales de entrada 411.
[0333] A continuación, el codificador de WLD 404 codifica los datos tridimensionales de entrada 411 correspondientes al WLD, generando de ese modo datos tridimensionales codificados 413 correspondientes al WLD (S404). Al hacerlo, el codificador de WLD 404 añade al encabezado de los datos tridimensionales codificados 413 información que distingue que dichos datos tridimensionales codificados 413 son un flujo que incluye un WLD. El codificador de SWLD 405 codifica los datos tridimensionales extraídos 412 correspondientes al SWLD, generando de ese modo datos tridimensionales codificados 414 correspondientes al SWLD (S405). Al hacerlo, el codificador de SWLD 405 añade al encabezado de los datos tridimensionales codificados 414 información que distingue que dichos datos tridimensionales codificados 414 son un flujo que incluye un SWLD.
[0334] Debe observarse que el proceso de generar datos tridimensionales codificados 413 y el proceso de generar datos tridimensionales codificados 414 pueden realizarse en el orden inverso. También debe observarse que una parte o la totalidad de estos procesos pueden realizarse en paralelo.
[0335] Se define un parámetro “world_type”, por ejemplo, como información añadida a cada encabezado de los datos tridimensionales codificados 413 y los datos tridimensionales codificados 414. world_type=0 indica que un flujo
incluye un WLD, y world_type=1 indica que un flujo incluye un SWLD. Puede asignarse adicionalmente un número aumentado de valores para definir un mayor número de tipos, por ejemplo, world_type=2. Además, uno de los datos tridimensionales codificados 413 y los datos tridimensionales codificados 414 puede incluir una bandera especificada. Por ejemplo, a los datos tridimensionales codificados 414 puede asignarse una bandera que indica que dicho flujo incluye un SWLD. En dicho caso, el dispositivo de decodificación puede distinguir si dicho flujo es un flujo que incluye un WLD o un flujo que incluye un SWLD de acuerdo con la presencia/ausencia de la bandera.
[0336] Además, un método de codificación usado por el codificador de WLD 404 para codificar un WLD puede ser diferente de un método de codificación usado por el codificador de SWLD 405 para codificar un SWLD. Por ejemplo, los datos de un SWLD están diezmados, y por lo tanto pueden tener una correlación más baja con los datos vecinos que la de un WLD. Por esta razón, de entre predicción intra y predicción inter, la predicción inter puede realizarse más preferencialmente en un método de codificación usado para un SWLD que en un método de codificación usado para un WLD.
[0337] Además, un método de codificación usado para un SWLD y un método de codificación usado para un WLD pueden representar posiciones tridimensionales de manera diferente. Por ejemplo, pueden usarse coordenadas tridimensionales para representar las posiciones tridimensionales de FVXL en un SWLD y un octree descrito a continuación puede usarse para representar posiciones tridimensionales en un WLD, y viceversa.
[0338] Además, el codificador de SWLD 405 realiza codificación de una manera en que los datos tridimensionales codificados 414 de un SWLD tienen un tamaño de datos más pequeño que el tamaño de datos de los datos tridimensionales codificados 413 de un WLD. Un SWLD puede tener una correlación entre datos más baja, por ejemplo, que la de un WLD como se describió anteriormente. Esto puede conducir a una disminución de la eficiencia de codificación, y por lo tanto a que los datos tridimensionales codificados 414 tengan un tamaño de datos mayor que el tamaño de datos de los datos tridimensionales codificados 413 de un WLD. Cuando el tamaño de datos de los datos tridimensionales codificados 414 resultantes es mayor que el tamaño de datos de los datos tridimensionales codificados 413 de un WLD, el codificador de SWLD 405 realiza codificación nuevamente para regenerar datos tridimensionales codificados 414 que tienen un tamaño de datos reducido. Por ejemplo, el extractor de SWLD 403 regenera datos tridimensionales extraídos 412 que tienen un número reducido de puntos clave que van a extraerse, y el codificador de SWLD 405 codifica dichos datos tridimensionales extraídos 412. Alternativamente, el codificador de SWLD 405 puede realizar una cuantización más gruesa. Una cuantización más gruesa se logra, por ejemplo, redondeando los datos en el nivel más bajo en una estructura de octree descrita a continuación.
[0339] Cuando no logra disminuir el tamaño de datos de los datos tridimensionales codificados 414 del SWLD a un valor menor que el tamaño de datos de los datos tridimensionales codificados 413 del WLD, el codificador de SWLD 405 puede no generar datos tridimensionales codificados 414 del SWLD. Alternativamente, los datos tridimensionales codificados 413 del WLD pueden copiarse como datos tridimensionales codificados 414 del SWLD. Dicho de otra manera, los datos tridimensionales codificados 413 del WLD pueden usarse tal como están como los datos tridimensionales codificados 414 del SWLD.
[0340] A continuación, se describirán la estructura y el flujo de operación del dispositivo de decodificación de datos tridimensionales (por ejemplo, un cliente) de acuerdo con la presente realización. La FIG.18 es un diagrama de bloques del dispositivo de decodificación de datos tridimensionales 500 de acuerdo con la presente realización. La FIG. 19 es un diagrama de flujo de procesos de decodificación de datos tridimensionales realizados por el dispositivo de decodificación de datos tridimensionales 500.
[0341] El dispositivo de decodificación de datos tridimensionales 500 mostrado en la FIG. 18 decodifica datos tridimensionales codificados 511, generando de ese modo datos tridimensionales decodificados 512 o datos tridimensionales decodificados 513. Los datos tridimensionales codificados 511 aquí son, por ejemplo, los datos tridimensionales codificados 413 o los datos tridimensionales codificados 414 generados por el dispositivo de codificación de datos tridimensionales 400.
[0342] Dicho dispositivo de decodificación de datos tridimensionales 500 incluye el obtenedor 501, el analizador de encabezado 502, el decodificador de WLD 503 y el decodificador de SWLD 504.
[0343] Primero, como muestra la FIG.19, el obtenedor 501 obtiene datos tridimensionales codificados 511 (S501). A continuación, el analizador de encabezado 502 analiza el encabezado de los datos tridimensionales codificados 511 para identificar si los datos tridimensionales codificados 511 son un flujo que incluye un WLD o un flujo que incluye un SWLD (S502). Por ejemplo, se hace referencia al parámetro world_type descrito anteriormente al realizar dicha identificación.
[0344] Cuando los datos tridimensionales codificados 511 son un flujo que incluye un WLD (Sí en S503), el decodificador de WLD 503 decodifica los datos tridimensionales codificados 511, generando de ese modo datos
tridimensionales decodificados 512 del WLD (S504). Mientras tanto, cuando los datos tridimensionales codificados 511 son un flujo que incluye un SWLD (No en S503), el decodificador de SWLD 504 decodifica los datos tridimensionales codificados 511, generando de ese modo datos tridimensionales decodificados 513 del SWLD (S505).
[0345] Además, como en el caso del dispositivo de codificación, un método de decodificación usado por el decodificador de WLD 503 para decodificar un WLD puede ser diferente de un método de decodificación usado por el decodificador de SWLD 504 para decodificar un SWLD. Por ejemplo, de entre predicción intra y predicción inter, la predicción inter puede realizarse más preferencialmente en un método de decodificación usado para un SWLD que en un método de decodificación usado para un WLD.
[0346] Además, un método de decodificación usado para un SWLD y un método de decodificación usado para un WLD pueden representar posiciones tridimensionales de manera diferente. Por ejemplo, pueden usarse coordenadas tridimensionales para representar las posiciones tridimensionales de FVXL en un SWLD y un octree descrito a continuación puede usarse para representar posiciones tridimensionales en un WLD, y viceversa.
[0347] A continuación, se describirá una representación de octree, que es un método de representar posiciones tridimensionales. Los datos de VXL incluidos en datos tridimensionales se convierten en una estructura de octree antes de ser codificados. La FIG.20 es un diagrama que muestra VXL de ejemplo en un WLD. La FIG.
[0348] 21 es un diagrama que muestra una estructura de octree del WLD mostrado en la FIG.20. Un ejemplo mostrado en la FIG.20 ilustra tres VXL 1 a 3 que incluyen grupos de puntos (en adelante denominados VXL efectivos). Como muestra la FIG. 21, la estructura de octree está compuesta por nodos y hojas. Cada nodo tiene un máximo de ocho nodos u hojas. Cada hoja tiene información de VXL. Aquí, de las hojas mostradas en la FIG.
[0349] 21, la hoja 1, la hoja 2 y la hoja 3 representan VXL1, VXL2 y VXL3 mostrados en la FIG.20, respectivamente. Más específicamente, cada nodo y cada hoja corresponden a una posición tridimensional. El nodo 1 corresponde al bloque completo mostrado en la FIG. 20. El bloque que corresponde al nodo 1 se divide en ocho bloques. De estos ocho bloques, los bloques que incluyen VXL efectivos se establecen como nodos, mientras que los otros bloques se establecen como hojas. Cada bloque que corresponde a un nodo se divide adicionalmente en ocho nodos u hojas. Estos procesos se repiten un número de veces que es igual al número de niveles en la estructura de octree. Todos los bloques en el nivel más bajo se establecen como hojas. La FIG.22 es un diagrama que muestra un SWLD de ejemplo generado a partir del WLD mostrado en la FIG.
[0350] 20. VXL1 y VXL2 mostrados en la FIG.20 se juzgan como FVXL1 y FVXL2 como resultado de la extracción de características, y por lo tanto se añaden al SWLD. Mientras tanto, VXL3 no se juzga como un FVXL, y por lo tanto no se añade al SWLD. La FIG. 23 es un diagrama que muestra una estructura de octree del SWLD mostrado en la FIG.22. En la estructura de octree mostrada en la FIG.23, la hoja 3 correspondiente a VXL3 mostrada en la FIG. 21 se elimina. En consecuencia, el nodo 3 mostrado en la FIG. 21 ha perdido un VXL efectivo, y ha cambiado a una hoja. Como se describió anteriormente, un SWLD tiene un número menor de hojas en general que un WLD, y por lo tanto los datos tridimensionales codificados del SWLD son menores que los datos tridimensionales codificados del WLD.
[0351] Lo siguiente describe variaciones de la presente realización.
[0352] Para estimación de autoubicación, por ejemplo, un cliente, que es un dispositivo montado en vehículo, etc., puede recibir un SWLD del servidor para usar dicho SWLD para estimar la autoubicación. Mientras tanto, para detección de obstáculos, el cliente puede detectar obstáculos mediante el uso de información tridimensional sobre la periferia obtenida por dicho cliente mediante diversos medios que incluyen un sensor de distancia tal como un telémetro, así como una cámara estereoscópica y una combinación de una pluralidad de cámaras monoculares.
[0353] En general, es menos probable que un SWLD incluya datos de VXL sobre una región plana. Como tal, el servidor puede mantener un mundo submuestreado (subWLD) obtenido submuestreando un WLD para detección de obstáculos estáticos, y enviar al cliente el SWLD y el subWLD. Esto permite que el cliente realice estimación de autoubicación y detección de obstáculos por parte del cliente, mientras reduce el ancho de banda de red.
[0354] Cuando el cliente representa datos de mapa tridimensional a alta velocidad, la información de mapas que tiene una estructura de malla es más útil en algunos casos. Como tal, el servidor puede generar una malla a partir de un WLD para mantenerla de antemano como un mundo de malla (MWLD). Por ejemplo, cuando desea realizar representación tridimensional aproximada, el cliente recibe un MWLD, y cuando desea realizar representación tridimensional detallada, el cliente recibe un WLD. Esto reduce el ancho de banda de red. En la descripción anterior, el servidor establece, como FVXL, VXL que tienen una cantidad de características mayor que o igual al umbral, pero el servidor puede calcular FVXL mediante un método diferente. Por ejemplo, el servidor puede juzgar que un VXL, un VLM, un SPC o un GOS que constituye una señal, o una intersección, etc. según sea necesario para estimación de autoubicación, asistencia a la conducción o conducción autónoma,
etc., e incorporar dicho VXL, VLM, SPC o GOS en un SWLD como un FVXL, un FVLM, un FSPC o un FGOS. Dicho juicio puede realizarse manualmente. Además, FVXL, etc. que se han establecido sobre la base de una cantidad de características pueden añadirse a FVXL, etc. obtenidos mediante el método anterior. Dicho de otra manera, el extractor de SWLD 403 puede extraer adicionalmente, de los datos tridimensionales de entrada 411, datos correspondientes a un objeto que tiene un atributo predeterminado como datos tridimensionales extraídos 412.
[0355] Además, que un VXL, un VLM, un SPC o un GOS sea necesario para dicho uso previsto puede etiquetarse separadamente de las características. El servidor puede mantener separadamente, como una capa superior de un SWLD (por ejemplo, un mundo de carril), FVXL de una señal o una intersección, etc. necesarios para estimación de autoubicación, asistencia a la conducción o conducción autónoma, etc.
[0356] El servidor también puede añadir un atributo a VXL en un WLD sobre una base de acceso aleatorio o sobre una base de unidad predeterminada. Un atributo, por ejemplo, incluye información que indica si los VXL son necesarios para estimación de autoubicación, o información que indica si los VXL son importantes como información de tráfico tal como una señal, o una intersección, etc. Un atributo también puede incluir una correspondencia entre VXL y características (intersección, o carretera, etc.) en información de carril (archivos de datos geográficos (GDF), etc.).
[0357] Puede usarse un método como se describe a continuación para actualizar un WLD o un SWLD.
[0358] Información de actualización que indica cambios, etc. en una persona, una obra vial o una línea de árboles (para camiones) se carga al servidor como grupos de puntos o metadatos. El servidor actualiza un WLD sobre la base de dicha información cargada, y luego actualiza un SWLD mediante el uso del WLD actualizado. El cliente, al detectar una discordancia entre la información tridimensional que dicho cliente ha generado en el momento de estimación de autoubicación y la información tridimensional recibida del servidor, puede enviar al servidor la información tridimensional que dicho cliente ha generado, junto con una notificación de actualización. En dicho caso, el servidor actualiza el SWLD mediante el uso del WLD. Cuando el SWLD no va a actualizarse, el servidor juzga que el propio WLD es antiguo.
[0359] En la descripción anterior, se añade información que distingue si un flujo codificado es el de un WLD o un SWLD como información de encabezado del flujo codificado. Sin embargo, cuando hay muchos tipos de mundos tales como un mundo de malla y un mundo de carril, puede añadirse información que distingue estos tipos de los mundos a información de encabezado. Además, cuando hay muchos SWLD con diferentes cantidades de características, puede añadirse información que distingue los respectivos SWLD a información de encabezado.
[0360] En la descripción anterior, un SWLD está constituido por FVXL, pero un SWLD puede incluir VXL que no han sido juzgados como FVXL. Por ejemplo, un SWLD puede incluir un VXL adyacente usado para calcular la característica de un FVXL. Esto permite que el cliente calcule la característica de un FVXL cuando recibe un SWLD, incluso en el caso en donde no se añade información de característica a cada FVXL del SWLD. En dicho caso, el SWLD puede incluir información que distingue si cada VXL es un FVXL o un VXL.
[0361] Como se describió anteriormente, el dispositivo de codificación de datos tridimensionales 400 extrae, de datos tridimensionales de entrada 411 (primeros datos tridimensionales), datos tridimensionales extraídos 412 (segundos datos tridimensionales) que tienen una cantidad de una característica mayor que o igual a un umbral, y codifica los datos tridimensionales extraídos 412 para generar datos tridimensionales codificados 414 (primeros datos tridimensionales codificados).
[0362] Este dispositivo de codificación de datos tridimensionales 400 genera datos tridimensionales codificados 414 que se obtienen codificando datos que tienen una cantidad de una característica mayor que o igual al umbral. Esto reduce la cantidad de datos en comparación con el caso en donde los datos tridimensionales de entrada 411 se codifican tal como están. Por lo tanto, el dispositivo de codificación de datos tridimensionales 400 es capaz de reducir la cantidad de datos que van a transmitirse.
[0363] El dispositivo de codificación de datos tridimensionales 400 codifica adicionalmente los datos tridimensionales de entrada 411 para generar datos tridimensionales codificados 413 (segundos datos tridimensionales codificados).
[0364] Este dispositivo de codificación de datos tridimensionales 400 permite la transmisión selectiva de datos tridimensionales codificados 413 y datos tridimensionales codificados 414, de acuerdo con, por ejemplo, el uso previsto, etc.
[0365] Además, los datos tridimensionales extraídos 412 son codificados mediante un primer método de codificación, y los datos tridimensionales de entrada 411 son codificados mediante un segundo método de codificación diferente del primer método de codificación.
[0366] Este dispositivo de codificación de datos tridimensionales 400 permite el uso de un método de codificación adecuado para cada uno de los datos tridimensionales de entrada 411 y los datos tridimensionales extraídos 412.
[0367] Además, de entre predicción intra y predicción inter, la predicción inter se realiza más preferencialmente en el primer método de codificación que en el segundo método de codificación.
[0368] Este dispositivo de codificación de datos tridimensionales 400 permite que la predicción inter se realice más preferencialmente sobre los datos tridimensionales extraídos 412 en los cuales los elementos de datos adyacentes probablemente tengan baja correlación.
[0369] Además, el primer método de codificación y el segundo método de codificación representan posiciones tridimensionales de manera diferente. Por ejemplo, el segundo método de codificación representa posiciones tridimensionales mediante octree, y el primer método de codificación representa posiciones tridimensionales mediante coordenadas tridimensionales.
[0370] Este dispositivo de codificación de datos tridimensionales 400 permite el uso de un método más adecuado para representar las posiciones tridimensionales de datos tridimensionales en consideración de la diferencia en el número de elementos de datos (el número de VXL o FVXL) incluidos.
[0371] Además, al menos uno de los datos tridimensionales codificados 413 y los datos tridimensionales codificados 414 incluye un identificador que indica si los datos tridimensionales codificados son datos tridimensionales codificados obtenidos codificando los datos tridimensionales de entrada 411 o datos tridimensionales codificados obtenidos codificando parte de los datos tridimensionales de entrada 411. Dicho de otra manera, dicho identificador indica si los datos tridimensionales codificados son datos tridimensionales codificados 413 de un WLD o datos tridimensionales codificados 414 de un SWLD.
[0372] Esto permite que el dispositivo de decodificación juzgue fácilmente si los datos tridimensionales codificados obtenidos son datos tridimensionales codificados 413 o datos tridimensionales codificados 414.
[0373] Además, el dispositivo de codificación de datos tridimensionales 400 codifica los datos tridimensionales extraídos 412 de una manera en que los datos tridimensionales codificados 414 tienen una cantidad de datos menor que una cantidad de datos de los datos tridimensionales codificados 413.
[0374] Este dispositivo de codificación de datos tridimensionales 400 permite que los datos tridimensionales codificados 414 tengan una cantidad de datos menor que la cantidad de datos de los datos tridimensionales codificados 413.
[0375] Además, el dispositivo de codificación de datos tridimensionales 400 extrae adicionalmente datos correspondientes a un objeto que tiene un atributo predeterminado de los datos tridimensionales de entrada 411 como datos tridimensionales extraídos 412. El objeto que tiene un atributo predeterminado es, por ejemplo, un objeto necesario para estimación de autoubicación, asistencia a la conducción o conducción autónoma, etc., o más específicamente, una señal, una intersección, etc.
[0376] Este dispositivo de codificación de datos tridimensionales 400 es capaz de generar datos tridimensionales codificados 414 que incluyen datos requeridos por el dispositivo de decodificación.
[0377] Además, el dispositivo de codificación de datos tridimensionales 400 (servidor) envía adicionalmente, a un cliente, uno de los datos tridimensionales codificados 413 y los datos tridimensionales codificados 414 de acuerdo con un estado del cliente.
[0378] Este dispositivo de codificación de datos tridimensionales 400 es capaz de enviar datos apropiados de acuerdo con el estado del cliente.
[0379] Además, el estado del cliente incluye una de una condición de comunicación (por ejemplo, ancho de banda de red) del cliente y una velocidad de desplazamiento del cliente.
[0380] Además, el dispositivo de codificación de datos tridimensionales 400 envía adicionalmente, a un cliente, uno de los datos tridimensionales codificados 413 y los datos tridimensionales codificados 414 de acuerdo con una solicitud del cliente.
[0381] Este dispositivo de codificación de datos tridimensionales 400 es capaz de enviar datos apropiados de acuerdo con la solicitud del cliente.
[0382] Además, el dispositivo de decodificación de datos tridimensionales 500 de acuerdo con la presente realización decodifica datos tridimensionales codificados 413 o datos tridimensionales codificados 414 generados por el dispositivo de codificación de datos tridimensionales 400 descrito anteriormente.
[0383] Dicho de otra manera, el dispositivo de decodificación de datos tridimensionales 500 decodifica, mediante un primer método de decodificación, datos tridimensionales codificados 414 obtenidos codificando datos tridimensionales extraídos 412 que tienen una cantidad de una característica mayor que o igual a un umbral, habiéndose extraído los datos tridimensionales extraídos 412 de datos tridimensionales de entrada 411. El dispositivo de decodificación de datos tridimensionales 500 también decodifica, mediante un segundo método de decodificación, datos tridimensionales codificados 413 obtenidos codificando datos tridimensionales de entrada 411, siendo el segundo método de decodificación diferente del primer método de decodificación. Este dispositivo de decodificación de datos tridimensionales 500 permite la recepción selectiva de datos tridimensionales codificados 414 obtenidos codificando datos que tienen una cantidad de una característica mayor que o igual al umbral y datos tridimensionales codificados 413, de acuerdo con, por ejemplo, el uso previsto, etc. Por lo tanto, el dispositivo de decodificación de datos tridimensionales 500 es capaz de reducir la cantidad de datos que van a transmitirse. Dicho dispositivo de decodificación de datos tridimensionales 500 permite adicionalmente el uso de un método de decodificación adecuado para cada uno de los datos tridimensionales de entrada 411 y los datos tridimensionales extraídos 412.
[0384] Además, de entre predicción intra y predicción inter, la predicción inter se realiza más preferencialmente en el primer método de decodificación que en el segundo método de decodificación.
[0385] Este dispositivo de decodificación de datos tridimensionales 500 permite que la predicción inter se realice más preferencialmente sobre los datos tridimensionales extraídos en los cuales los elementos de datos adyacentes probablemente tengan baja correlación.
[0386] Además, el primer método de decodificación y el segundo método de decodificación representan posiciones tridimensionales de manera diferente. Por ejemplo, el segundo método de decodificación representa posiciones tridimensionales mediante octree, y el primer método de decodificación representa posiciones tridimensionales mediante coordenadas tridimensionales.
[0387] Este dispositivo de decodificación de datos tridimensionales 500 permite el uso de un método más adecuado para representar las posiciones tridimensionales de datos tridimensionales en consideración de la diferencia en el número de elementos de datos (el número de los VXL o los FVXL) incluidos.
[0388] Además, al menos uno de los datos tridimensionales codificados 413 y los datos tridimensionales codificados 414 incluye un identificador que indica si los datos tridimensionales codificados son datos tridimensionales codificados obtenidos codificando datos tridimensionales de entrada 411 o datos tridimensionales codificados obtenidos codificando parte de datos tridimensionales de entrada 411. El dispositivo de decodificación de datos tridimensionales 500 hace referencia a dicho identificador al identificar entre datos tridimensionales codificados 413 y datos tridimensionales codificados 414.
[0389] Este dispositivo de decodificación de datos tridimensionales 500 es capaz de juzgar fácilmente si los datos tridimensionales codificados obtenidos son datos tridimensionales codificados 413 o datos tridimensionales codificados 414.
[0390] El dispositivo de decodificación de datos tridimensionales 500 notifica adicionalmente a un servidor un estado del cliente (dispositivo de decodificación de datos tridimensionales 500). El dispositivo de decodificación de datos tridimensionales 500 recibe uno de datos tridimensionales codificados 413 y datos tridimensionales codificados 414 desde el servidor, de acuerdo con el estado del cliente.
[0391] Este dispositivo de decodificación de datos tridimensionales 500 es capaz de recibir datos apropiados de acuerdo con el estado del cliente.
[0392] Además, el estado del cliente incluye una de una condición de comunicación (por ejemplo, ancho de banda de red) del cliente y una velocidad de desplazamiento del cliente.
[0393] El dispositivo de decodificación de datos tridimensionales 500 realiza adicionalmente una solicitud al servidor para uno de datos tridimensionales codificados 413 y datos tridimensionales codificados 414, y recibe uno de datos tridimensionales codificados 413 y datos tridimensionales codificados 414 desde el servidor, de acuerdo con la solicitud.
[0394] Este dispositivo de decodificación de datos tridimensionales 500 es capaz de recibir datos apropiados de acuerdo con el uso previsto.
[0395] Realización 3
[0396] La presente realización describirá un método de transmisión/recepción de datos tridimensionales entre vehículos. Por ejemplo, los datos tridimensionales se transmiten/reciben entre el vehículo propio y el vehículo cercano.
[0397] La FIG.24 es un diagrama de bloques del dispositivo de creación de datos tridimensionales 620 de acuerdo con la presente realización. Dicho dispositivo de creación de datos tridimensionales 620, que está incluido, por ejemplo, en el vehículo propio, fusiona primeros datos tridimensionales 632 creados por el dispositivo de creación de datos tridimensionales 620 con los segundos datos tridimensionales 635 recibidos, creando de ese modo terceros datos tridimensionales 636 que tienen una densidad más alta.
[0398] Dicho dispositivo de creación de datos tridimensionales 620 incluye el creador de datos tridimensionales 621, el determinador de intervalo de solicitud 622, el buscador 623, el receptor 624, el decodificador 625 y el fusionador 626.
[0399] Primero, el creador de datos tridimensionales 621 crea primeros datos tridimensionales 632 mediante el uso de información de sensor 631 detectada por el sensor incluido en el vehículo propio. A continuación, el determinador de intervalo de solicitud 622 determina un intervalo de solicitud, que es el intervalo de un espacio tridimensional, cuyos datos son insuficientes en los primeros datos tridimensionales 632 creados.
[0400] A continuación, el buscador 623 busca el vehículo cercano que tiene los datos tridimensionales del intervalo de solicitud, y envía información de intervalo de solicitud 633 que indica el intervalo de solicitud al vehículo cercano 601 que se ha buscado (S623). A continuación, el receptor 624 recibe datos tridimensionales codificados 634, que son un flujo codificado del intervalo de solicitud, desde el vehículo cercano 601 (S624). Debe observarse que el buscador 623 puede enviar solicitudes indiscriminadamente a todos los vehículos incluidos en un intervalo especificado para recibir datos tridimensionales codificados 634 de un vehículo que ha respondido a la solicitud. El buscador 623 puede enviar una solicitud no solo a vehículos sino también a un objeto tal como una señal y una señalización, y recibir datos tridimensionales codificados 634 desde el objeto.
[0401] A continuación, el decodificador 625 decodifica los datos tridimensionales codificados 634 recibidos, obteniendo de ese modo segundos datos tridimensionales 635. A continuación, el fusionador 626 fusiona primeros datos tridimensionales 632 con segundos datos tridimensionales 635, creando de ese modo datos tridimensionales 636 que tienen una densidad más alta.
[0402] A continuación, se describirán la estructura y las operaciones del dispositivo de transmisión de datos tridimensionales 640 de acuerdo con la presente realización. La FIG. 25 es un diagrama de bloques del dispositivo de transmisión de datos tridimensionales 640.
[0403] El dispositivo de transmisión de datos tridimensionales 640 está incluido, por ejemplo, en el vehículo cercano descrito anteriormente. El dispositivo de transmisión de datos tridimensionales 640 procesa quintos datos tridimensionales 652 creados por el vehículo cercano en sextos datos tridimensionales 654 solicitados por el vehículo propio, codifica sextos datos tridimensionales 654 para generar datos tridimensionales codificados 634, y envía datos tridimensionales codificados 634 al vehículo propio.
[0404] El dispositivo de transmisión de datos tridimensionales 640 incluye el creador de datos tridimensionales 641, el receptor 642, el extractor 643, el codificador 644 y el transmisor 645.
[0405] Primero, el creador de datos tridimensionales 641 crea quintos datos tridimensionales 652 mediante el uso de información de sensor 651 detectada por el sensor incluido en el vehículo cercano. A continuación, el receptor 642 recibe información de intervalo de solicitud 633 desde el vehículo propio.
[0406] A continuación, el extractor 643 extrae de quintos datos tridimensionales 652 los datos tridimensionales del intervalo de solicitud indicado por la información de intervalo de solicitud 633, procesando de ese modo quintos datos tridimensionales 652 en sextos datos tridimensionales 654. A continuación, el codificador 644 codifica sextos datos tridimensionales 654 para generar datos tridimensionales codificados 643, que son un flujo codificado. Luego, el transmisor 645 envía datos tridimensionales codificados 634 al vehículo propio.
[0407] Debe observarse que aunque aquí se describe un caso de ejemplo en el cual el vehículo propio incluye el dispositivo de creación de datos tridimensionales 620 y el vehículo cercano incluye el dispositivo de transmisión de datos tridimensionales 640, cada uno de los vehículos puede incluir la funcionalidad tanto del dispositivo de creación de datos tridimensionales 620 como del dispositivo de transmisión de datos tridimensionales 640.Realización 4
[0408] La presente realización describe operaciones realizadas en casos anormales cuando se realiza estimación de autoubicación sobre la base de un mapa tridimensional.
[0409] Se espera que un mapa tridimensional encuentre su uso expandido en conducción autónoma de un vehículo y movimiento autónomo, etc. de un objeto móvil tal como un robot y un objeto volador (por ejemplo, un dron). Medios de ejemplo para permitir dicho movimiento autónomo incluyen un método en el cual un objeto móvil se desplaza de acuerdo con un mapa tridimensional, mientras estima su autoubicación en el mapa (estimación de autoubicación).
[0410] La estimación de autoubicación se permite haciendo coincidir un mapa tridimensional con información tridimensional sobre los alrededores del vehículo propio (en adelante denominada datos tridimensionales autodetectados) obtenida por un sensor equipado en el vehículo propio, tal como un telémetro (por ejemplo, un LiDAR) y una cámara estereoscópica para estimar la ubicación del vehículo propio en el mapa tridimensional. Como en el caso de un mapa HD sugerido por HERE Technologies, por ejemplo, un mapa tridimensional puede incluir no solo una nube de puntos tridimensional, sino también datos de mapa bidimensionales tales como información sobre las formas de carreteras e intersecciones, o información que cambia en tiempo real tal como información sobre un atasco de tráfico y un accidente. Un mapa tridimensional incluye una pluralidad de capas tales como capas de datos tridimensionales, datos bidimensionales y metadatos que cambian en tiempo real, de entre las cuales el dispositivo puede obtener o hacer referencia solo a datos necesarios.
[0411] Los datos de nube de puntos pueden ser un SWLD como se describió anteriormente, o pueden incluir datos de grupos de puntos que son diferentes de puntos clave. La transmisión/recepción de datos de nube de puntos se lleva a cabo básicamente en una o más unidades de acceso aleatorio.
[0412] Un método descrito a continuación se usa como un método de hacer coincidir un mapa tridimensional con datos tridimensionales autodetectados. Por ejemplo, el dispositivo compara las formas de los grupos de puntos en las nubes de puntos entre sí, y determina que porciones que tienen un alto grado de similitud entre puntos clave corresponden a la misma posición. Cuando el mapa tridimensional está formado por un SWLD, el dispositivo también realiza coincidencia comparando los puntos clave que forman el SWLD con puntos clave tridimensionales extraídos de los datos tridimensionales autodetectados.
[0413] Aquí, para permitir estimación de autoubicación altamente precisa, debe satisfacerse lo siguiente: (A) el mapa tridimensional y los datos tridimensionales autodetectados ya se han obtenido; y (B) sus precisiones satisfacen un requisito predeterminado. Sin embargo, uno de (A) y (B) no puede satisfacerse en casos anormales tales como los descritos a continuación.
[0414] 1. Un mapa tridimensional no puede obtenerse a través de comunicación.
[0415] 2. Un mapa tridimensional no está presente, o un mapa tridimensional que se ha obtenido está corrupto.
[0416] 3. Un sensor del vehículo propio tiene problemas, o la precisión de los datos tridimensionales autodetectados generados es inadecuada debido al mal tiempo.
[0417] Lo siguiente describe operaciones para afrontar dichos casos anormales. La siguiente descripción ilustra un caso de ejemplo de un vehículo, pero el método descrito a continuación es aplicable a objetos móviles en conjunto que son capaces de movimiento autónomo, tales como un robot y un dron.
[0418] Lo siguiente describe la estructura del dispositivo de procesamiento de información tridimensional y su operación de acuerdo con la presente realización capaz de afrontar casos anormales con respecto a un mapa tridimensional o datos tridimensionales autodetectados. La FIG. 26 es un diagrama de bloques de una estructura de ejemplo del dispositivo de procesamiento de información tridimensional 700 de acuerdo con la presente realización.
[0419] El dispositivo de procesamiento de información tridimensional 700 está equipado, por ejemplo, en un objeto móvil tal como un automóvil. Como se muestra en la FIG.26, el dispositivo de procesamiento de información tridimensional 700 incluye el obtenedor de mapas tridimensionales 701, el obtenedor de datos autodetectados 702, la unidad de juicio de caso anormal 703, el determinador de operación de afrontamiento 704 y el controlador de operación 705.
[0420] Debe observarse que el dispositivo de procesamiento de información tridimensional 700 puede incluir un sensor bidimensional o unidimensional no ilustrado que detecta un objeto estructural o un objeto móvil alrededor del vehículo propio, tal como una cámara capaz de obtener imágenes bidimensionales y un sensor para datos unidimensionales que utiliza ultrasonido o láser. El dispositivo de procesamiento de información tridimensional 700 también puede incluir una unidad de comunicación no ilustrada que obtiene un mapa tridimensional a través de una red de comunicación móvil, tal como 4G y 5G, o mediante comunicación entre vehículos o comunicación de carretera a vehículo.
[0421] El obtenedor de mapas tridimensionales 701 obtiene un mapa tridimensional 711 de los alrededores de la ruta de desplazamiento. Por ejemplo, el obtenedor de mapas tridimensionales 701 obtiene un mapa tridimensional 711 a través de una red de comunicación móvil, o mediante comunicación entre vehículos o comunicación de carretera a vehículo.
[0422] A continuación, el obtenedor de datos autodetectados 702 obtiene datos tridimensionales autodetectados 712 sobre la base de información de sensor. Por ejemplo, el obtenedor de datos autodetectados 702 genera datos tridimensionales autodetectados 712 sobre la base de la información de sensor obtenida por un sensor equipado en el vehículo propio.
[0423] A continuación, la unidad de juicio de caso anormal 703 realiza una comprobación predeterminada de al menos uno del mapa tridimensional 711 obtenido y los datos tridimensionales autodetectados 712 para detectar un caso anormal. Dicho de otra manera, la unidad de juicio de caso anormal 703 juzga si al menos uno del mapa tridimensional 711 obtenido y los datos tridimensionales autodetectados 712 es anormal.
[0424] Cuando se detecta el caso anormal, el determinador de operación de afrontamiento 704 determina una operación de afrontamiento para afrontar dicho caso anormal. A continuación, el controlador de operación 705 controla la operación de cada una de las unidades de procesamiento necesarias para realizar la operación de afrontamiento.
[0425] Mientras tanto, cuando no se detecta caso anormal, el dispositivo de procesamiento de información tridimensional 700 termina el proceso.
[0426] Además, el dispositivo de procesamiento de información tridimensional 700 estima la ubicación del vehículo equipado con el dispositivo de procesamiento de información tridimensional 700, usando el mapa tridimensional 711 y los datos tridimensionales autodetectados 712. A continuación, el dispositivo de procesamiento de información tridimensional 700 realiza la operación automática del vehículo mediante el uso de la ubicación estimada del vehículo.
[0427] Como se describió anteriormente, el dispositivo 700 de procesamiento de información tridimensional obtiene, a través de un canal de comunicación, datos de mapa (mapa tridimensional 711) que incluyen primera información de posición tridimensional. La primera información de posición tridimensional incluye, por ejemplo, una pluralidad de unidades de acceso aleatorio, cada una de las cuales es un conjunto de al menos un subespacio y es decodificable individualmente, teniendo el al menos un subespacio información de coordenadas tridimensionales y sirviendo como una unidad en la que cada una de la pluralidad de unidades de acceso aleatorio es codificada. La primera información de posición tridimensional es, por ejemplo, datos (SWLD) obtenidos mediante la codificación de puntos clave, cada uno de los cuales tiene una cantidad de una característica tridimensional mayor o igual que un umbral predeterminado.
[0428] El dispositivo 700 de procesamiento de información tridimensional también genera segunda información de posición tridimensional (datos tridimensionales autodetectados 712) a partir de información detectada por un sensor. El dispositivo 700 de procesamiento de información tridimensional juzga entonces si una de la primera información de posición tridimensional y la segunda información de posición tridimensional es anormal realizando, sobre una de la primera información de posición tridimensional y la segunda información de posición tridimensional, un proceso de juzgar si está presente una anomalía.
[0429] El dispositivo 700 de procesamiento de información tridimensional determina una operación de respuesta para abordar la anomalía cuando se juzga que una de la primera información de posición tridimensional y la segunda información de posición tridimensional es anormal. El dispositivo 700 de procesamiento de información tridimensional ejecuta entonces un control que se requiere para realizar la operación de respuesta.
[0430] Esta estructura permite al dispositivo 700 de procesamiento de información tridimensional detectar una anomalía con respecto a una de la primera información de posición tridimensional y la segunda información de posición tridimensional, y realizar una operación de respuesta para la misma.
[0431] Realización 5
[0432] La presente realización describe un método, etc., para transmitir datos tridimensionales a un vehículo que sigue.
[0433] La FIG. 27 es un diagrama de bloques de una estructura ejemplar del dispositivo 810 de creación de datos tridimensionales de acuerdo con la presente realización. Dicho dispositivo 810 de creación de datos tridimensionales está equipado, por ejemplo, en un vehículo. El dispositivo 810 de creación de datos tridimensionales transmite y recibe datos tridimensionales hacia y desde un sistema externo de monitorización de tráfico basado en la nube, un vehículo precedente o un vehículo que sigue, y crea y almacena datos tridimensionales.
[0434] El dispositivo 810 de creación de datos tridimensionales incluye un receptor 811 de datos, una unidad 812 de comunicación, un controlador 813 de recepción, un convertidor 814 de formato, una pluralidad de sensores 815, un creador 816 de datos tridimensionales, un sintetizador 817 de datos tridimensionales, un almacenamiento 818 de datos tridimensionales, una unidad 819 de comunicación, un controlador 820 de transmisión, un convertidor 821 de formato y un transmisor 822 de datos.
[0435] El receptor 811 de datos recibe datos tridimensionales 831 desde un sistema de monitorización de tráfico basado en la nube o un vehículo precedente. Los datos tridimensionales 831 incluyen, por ejemplo, información sobre una región no detectable por los sensores 815 del propio vehículo, tal como una nube de puntos, vídeo de luz visible, información de profundidad, información de posición de sensor e información de velocidad.
[0436] La unidad 812 de comunicación se comunica con el sistema de monitorización de tráfico basado en la nube o el vehículo precedente para transmitir una solicitud de transmisión de datos, etc., al sistema de monitorización de tráfico basado en la nube o al vehículo precedente.
[0437] El controlador 813 de recepción intercambia información, tal como información sobre formatos soportados, con un interlocutor de comunicación a través de la unidad 812 de comunicación para establecer comunicación con el interlocutor de comunicación.
[0438] El convertidor 814 de formato aplica conversión de formato, etc., sobre los datos tridimensionales 831 recibidos por el receptor 811 de datos para generar datos tridimensionales 832. El convertidor 814 de formato también descomprime o decodifica los datos tridimensionales 831 cuando los datos tridimensionales 831 están comprimidos o codificados.
[0439] La pluralidad de sensores 815 es un grupo de sensores, tales como cámaras de luz visible y cámaras infrarrojas, que obtienen información sobre el exterior del vehículo y generan información de sensor 833. La información de sensor 833 es, por ejemplo, datos tridimensionales tales como una nube de puntos (datos de grupo de puntos), cuando los sensores 815 son sensores láser tales como LiDAR. Obsérvese que un único sensor puede servir como la pluralidad de sensores 815.
[0440] El creador 816 de datos tridimensionales genera datos tridimensionales 834 a partir de la información de sensor 833. Los datos tridimensionales 834 incluyen, por ejemplo, información tal como una nube de puntos, vídeo de luz visible, información de profundidad, información de posición de sensor e información de velocidad.
[0441] El sintetizador 817 de datos tridimensionales sintetiza los datos tridimensionales 834 creados sobre la base de la información de sensor 833 del propio vehículo con los datos tridimensionales 832 creados por el sistema de monitorización de tráfico basado en la nube o el vehículo precedente, etc., formando de este modo datos tridimensionales 835 de un espacio que incluye el espacio situado por delante del vehículo precedente no detectable por los sensores 815 del propio vehículo.
[0442] El almacenamiento 818 de datos tridimensionales almacena los datos tridimensionales 835 generados, etc. La unidad 819 de comunicación se comunica con el sistema de monitorización de tráfico basado en la nube o el vehículo que sigue para transmitir una solicitud de transmisión de datos, etc., al sistema de monitorización de tráfico basado en la nube o al vehículo que sigue.
[0443] El controlador 820 de transmisión intercambia información tal como información sobre formatos soportados con un interlocutor de comunicación a través de la unidad 819 de comunicación para establecer comunicación con el interlocutor de comunicación. El controlador 820 de transmisión también determina una región de transmisión, que es un espacio de los datos tridimensionales a transmitir, sobre la base de información de formación de datos tridimensionales sobre los datos tridimensionales 832 generados por el sintetizador 817 de datos tridimensionales y la solicitud de transmisión de datos procedente del interlocutor de comunicación. Más específicamente, el controlador 820 de transmisión determina una región de transmisión que incluye el espacio situado por delante del propio vehículo no detectable por un sensor del vehículo que sigue, en respuesta a la solicitud de transmisión de datos procedente del sistema de monitorización de tráfico basado en la nube o del vehículo que sigue. El controlador 820 de transmisión juzga, por ejemplo, si un espacio es transmisible o si el espacio ya transmitido incluye una actualización, sobre la base de la información de formación de datos tridimensionales para determinar una región de transmisión. Por ejemplo, el controlador 820 de transmisión determina, como región de transmisión, una región que es: una región especificada por la solicitud de transmisión de datos; y una región cuyos correspondientes datos tridimensionales 835 están presentes. El controlador 820 de transmisión notifica entonces al convertidor 821 de formato el formato soportado por el interlocutor de comunicación y la región de transmisión.
[0444] De los datos tridimensionales 835 almacenados en el almacenamiento 818 de datos tridimensionales, el convertidor 821 de formato convierte los datos tridimensionales 836 de la región de transmisión al formato soportado por el extremo receptor para generar datos tridimensionales 837. Obsérvese que el convertidor 821 de formato puede comprimir o codificar los datos tridimensionales 837 para reducir la cantidad de datos. El transmisor 822 de datos transmite los datos tridimensionales 837 al sistema de monitorización de tráfico basado en la nube o al vehículo que sigue. Dichos datos tridimensionales 837 incluyen, por ejemplo, información sobre un punto ciego, que es una región oculta a la vista del vehículo que sigue, tal como una nube de puntos situada por delante del propio vehículo, vídeo de luz visible, información de profundidad e información de posición de sensor.
[0445] Obsérvese que se ha descrito un ejemplo en el que el convertidor 814 de formato y el convertidor 821 de formato realizan conversión de formato, etc., pero la conversión de formato puede no realizarse.
[0446] Con la estructura anterior, el dispositivo 810 de creación de datos tridimensionales obtiene, desde un dispositivo externo, datos tridimensionales 831 de una región no detectable por los sensores 815 del propio vehículo, y sintetiza los datos tridimensionales 831 con los datos tridimensionales 834 que se basan en la información de sensor 833 detectada por los sensores 815 del propio vehículo, generando de este modo datos tridimensionales 835. Por lo tanto, el dispositivo 810 de creación de datos tridimensionales es capaz de generar datos tridimensionales de un rango no detectable por los sensores 815 del propio vehículo.
[0447] El dispositivo 810 de creación de datos tridimensionales también es capaz de transmitir, al sistema de monitorización de tráfico basado en la nube o al vehículo que sigue, etc., datos tridimensionales de un espacio que incluye el espacio situado por delante del propio vehículo no detectable por un sensor del vehículo que sigue, en respuesta a la solicitud de transmisión de datos procedente del sistema de monitorización de tráfico basado en la nube o del vehículo que sigue.
[0448] Realización 6
[0449] En la realización 5, se describe un ejemplo en el que un dispositivo cliente de un vehículo o similar transmite datos tridimensionales a otro vehículo o a un servidor tal como un sistema de monitorización de tráfico basado en la nube. En la presente realización, un dispositivo cliente transmite información de sensor obtenida mediante un sensor a un servidor o a un dispositivo cliente.
[0450] En primer lugar se describirá una estructura de un sistema de acuerdo con la presente realización. La FIG.28 es un diagrama que muestra la estructura de un sistema de transmisión/recepción de un mapa tridimensional e información de sensor de acuerdo con la presente realización. Este sistema incluye un servidor 901 y dispositivos cliente 902A y 902B. Obsérvese que los dispositivos cliente 902A y 902B también se denominan dispositivo cliente 902 cuando no se hace ninguna distinción particular entre ellos.
[0451] El dispositivo cliente 902 es, por ejemplo, un dispositivo montado en vehículo equipado en un objeto móvil tal como un vehículo. El servidor 901 es, por ejemplo, un sistema de monitorización de tráfico basado en la nube y es capaz de comunicarse con la pluralidad de dispositivos cliente 902.
[0452] El servidor 901 transmite al dispositivo cliente 902 el mapa tridimensional formado por una nube de puntos. Obsérvese que una estructura del mapa tridimensional no está limitada a una nube de puntos y también puede ser otra estructura que exprese datos tridimensionales tal como una estructura de malla.
[0453] El dispositivo cliente 902 transmite al servidor 901 la información de sensor obtenida por el dispositivo cliente 902. La información de sensor incluye, por ejemplo, al menos una de información obtenida por LiDAR, una imagen de luz visible, una imagen infrarroja, una imagen de profundidad, información de posición de sensor o información de velocidad de sensor.
[0454] Los datos a transmitir y recibir entre el servidor 901 y el dispositivo cliente 902 pueden comprimirse para reducir el volumen de datos, y también pueden transmitirse sin compresión para mantener la precisión de los datos. Al comprimir los datos, es posible utilizar un método de compresión tridimensional sobre la nube de puntos basado en, por ejemplo, una estructura de octree. Es posible utilizar un método de compresión de imagen bidimensional sobre la imagen de luz visible, la imagen infrarroja y la imagen de profundidad. El método de compresión de imagen bidimensional es, por ejemplo, MPEG-4 AVC o HEVC estandarizada por MPEG.
[0455] El servidor 901 transmite el mapa tridimensional gestionado por el servidor 901 al dispositivo cliente 902 en respuesta a una solicitud de transmisión del mapa tridimensional procedente del dispositivo cliente 902. Obsérvese que el servidor 901 también puede transmitir el mapa tridimensional sin esperar la solicitud de transmisión del mapa tridimensional procedente del dispositivo cliente 902. Por ejemplo, el servidor 901 puede difundir el mapa tridimensional a al menos un dispositivo cliente 902 situado en un espacio predeterminado. El servidor 901 también puede transmitir el mapa tridimensional adecuado para una posición del dispositivo cliente 902 a intervalos de tiempo fijos al dispositivo cliente 902 que haya recibido una vez la solicitud de transmisión. El servidor 901 también puede transmitir el mapa tridimensional gestionado por el servidor 901 al dispositivo cliente 902 cada vez que el mapa tridimensional se actualiza.
[0456] El dispositivo cliente 902 envía la solicitud de transmisión del mapa tridimensional al servidor 901. Por ejemplo, cuando el dispositivo cliente 902 desea realizar la estimación de autolocalización durante el desplazamiento, el dispositivo cliente 902 transmite la solicitud de transmisión del mapa tridimensional al servidor 901.
[0457] Obsérvese que, en los siguientes casos, el dispositivo cliente 902 puede enviar la solicitud de transmisión del mapa tridimensional al servidor 901. El dispositivo cliente 902 puede enviar la solicitud de transmisión del mapa tridimensional al servidor 901 cuando el mapa tridimensional almacenado por el dispositivo cliente 902 es antiguo. Por ejemplo, el dispositivo cliente 902 puede enviar la solicitud de transmisión del mapa tridimensional al servidor 901 cuando ha transcurrido un período fijo desde que el mapa tridimensional fue obtenido por el dispositivo cliente 902.
[0458] El dispositivo cliente 902 también puede enviar la solicitud de transmisión del mapa tridimensional al servidor 901 antes de un tiempo fijo cuando el dispositivo cliente 902 sale de un espacio mostrado en el mapa tridimensional almacenado por el dispositivo cliente 902. Por ejemplo, el dispositivo cliente 902 puede enviar la solicitud de transmisión del mapa tridimensional al servidor 901 cuando el dispositivo cliente 902 está situado dentro de una distancia predeterminada de un límite del espacio mostrado en el mapa tridimensional almacenado por el dispositivo cliente 902. Cuando se conocen una trayectoria de movimiento y una velocidad de movimiento del dispositivo cliente 902, puede predecirse un momento en el que el dispositivo cliente 902 sale del espacio mostrado en el mapa tridimensional almacenado por el dispositivo cliente 902 basándose en la trayectoria de movimiento y la velocidad de movimiento del dispositivo cliente 902.
[0459] El dispositivo cliente 902 también puede enviar la solicitud de transmisión para el mapa tridimensional al servidor 901 cuando un error durante la alineación de los datos tridimensionales y el mapa tridimensional creado a partir de la información de sensor por el dispositivo cliente 902 es al menos de un nivel fijo.
[0460] El dispositivo cliente 902 transmite la información de sensor al servidor 901 en respuesta a una solicitud de transmisión para la información de sensor procedente del servidor 901. Cabe señalar que el dispositivo cliente 902 puede transmitir la información de sensor al servidor 901 sin esperar la solicitud de transmisión para la información de sensor procedente del servidor 901. Por ejemplo, el dispositivo cliente 902 puede transmitir periódicamente la información de sensor durante un período fijo cuando el dispositivo cliente 902 ha recibido una vez la solicitud de transmisión para la información de sensor procedente del servidor 901. El dispositivo cliente 902 puede determinar que existe una posibilidad de que haya ocurrido un cambio en el mapa tridimensional de un área circundante del dispositivo cliente 902, y transmitir esta información y la información de sensor al servidor 901, cuando el error durante la alineación de los datos tridimensionales creados por el dispositivo cliente 902 basándose en la información de sensor y el mapa tridimensional obtenido del servidor 901 es al menos del nivel fijo.
[0461] El servidor 901 envía una solicitud de transmisión para la información de sensor al dispositivo cliente 902. Por ejemplo, el servidor 901 recibe información de posición, tal como información GPS, acerca del dispositivo cliente 902 desde el dispositivo cliente 902. El servidor 901 envía la solicitud de transmisión para la información de sensor al dispositivo cliente 902 para generar un nuevo mapa tridimensional, cuando se determina que el dispositivo cliente 902 se está aproximando a un espacio en el que el mapa tridimensional gestionado por el servidor 901 contiene poca información, basándose en la información de posición acerca del dispositivo cliente 902. El servidor 901 también puede enviar la solicitud de transmisión para la información de sensor cuando desea (i) actualizar el mapa tridimensional, (ii) verificar las condiciones de la carretera durante una nevada, un desastre o similares, o (iii) verificar condiciones de congestión de tráfico, condiciones de accidente/incidente o similares.
[0462] El dispositivo cliente 902 puede establecer una cantidad de datos de la información de sensor que va a transmitirse al servidor 901 de acuerdo con las condiciones de comunicación o el ancho de banda durante la recepción de la solicitud de transmisión para la información de sensor que va a recibirse desde el servidor 901. Establecer la cantidad de datos de la información de sensor que va a transmitirse al servidor 901 consiste, por ejemplo, en aumentar/reducir los propios datos o seleccionar apropiadamente un método de compresión. La FIG.29 es un diagrama de bloques que muestra una estructura de ejemplo del dispositivo cliente 902. El dispositivo cliente 902 recibe el mapa tridimensional formado por una nube de puntos y similares desde el servidor 901, y estima una ubicación propia del dispositivo cliente 902 usando el mapa tridimensional creado basándose en la información de sensor del dispositivo cliente 902. El dispositivo cliente 902 transmite la información de sensor obtenida al servidor 901.
[0463] El dispositivo cliente 902 incluye un receptor de datos 1011, una unidad de comunicación 1012, un controlador de recepción 1013, un convertidor de formato 1014, sensores 1015, un creador de datos tridimensionales 1016, un procesador de imágenes tridimensionales 1017, un almacenamiento de datos tridimensionales 1018, un convertidor de formato 1019, una unidad de comunicación 1020, un controlador de transmisión 1021 y un transmisor de datos 1022.
[0464] El receptor de datos 1011 recibe el mapa tridimensional 1031 desde el servidor 901. El mapa tridimensional 1031 es datos que incluyen una nube de puntos tal como un WLD o un SWLD. El mapa tridimensional 1031 puede incluir datos comprimidos o datos sin comprimir.
[0465] La unidad de comunicación 1012 se comunica con el servidor 901 y transmite una solicitud de transmisión de datos (por ejemplo, una solicitud de transmisión para un mapa tridimensional) al servidor 901.
[0466] El controlador de recepción 1013 intercambia información, tal como información sobre formatos compatibles, con un interlocutor de comunicación a través de la unidad de comunicación 1012 para establecer comunicación con el interlocutor de comunicación.
[0467] El convertidor de formato 1014 realiza una conversión de formato y similares sobre el mapa tridimensional 1031 recibido por el receptor de datos 1011 para generar el mapa tridimensional 1032. El convertidor de formato
1014 también realiza un proceso de descompresión o decodificación cuando el mapa tridimensional 1031 está comprimido o codificado. Cabe señalar que el convertidor de formato 1014 no realiza el proceso de descompresión o decodificación cuando el mapa tridimensional 1031 son datos sin comprimir.
[0468] Los sensores 815 son un grupo de sensores, tales como LiDAR, cámaras de luz visible, cámaras infrarrojas o sensores de profundidad, que obtienen información acerca del exterior de un vehículo equipado con el dispositivo cliente 902 y generan información de sensor 1033. La información de sensor 1033 es, por ejemplo, datos tridimensionales tales como una nube de puntos (datos de grupo de puntos) cuando los sensores 1015 son sensores láser tales como LiDAR. Cabe señalar que un único sensor puede servir como los sensores 1015. El creador de datos tridimensionales 1016 genera datos tridimensionales 1034 de un área circundante del propio vehículo basándose en la información de sensor 1033. Por ejemplo, el creador de datos tridimensionales 1016 genera datos de nube de puntos con información de color sobre el área circundante del propio vehículo usando información obtenida por LiDAR y vídeo de luz visible obtenido por una cámara de luz visible.
[0469] El procesador de imágenes tridimensionales 1017 realiza un proceso de estimación de ubicación propia y similares del propio vehículo, usando (i) el mapa tridimensional 1032 recibido, tal como una nube de puntos, y (ii) los datos tridimensionales 1034 del área circundante del propio vehículo generados usando la información de sensor 1033. Cabe señalar que el procesador de imágenes tridimensionales 1017 puede generar datos tridimensionales 1035 acerca de los alrededores del propio vehículo fusionando el mapa tridimensional 1032 y los datos tridimensionales 1034, y puede realizar el proceso de estimación de ubicación propia usando los datos tridimensionales 1035 creados.
[0470] El almacenamiento de datos tridimensionales 1018 almacena el mapa tridimensional 1032, los datos tridimensionales 1034, los datos tridimensionales 1035 y similares.
[0471] El convertidor de formato 1019 genera información de sensor 1037 convirtiendo la información de sensor 1033 a un formato compatible con un extremo receptor. Cabe señalar que el convertidor de formato 1019 puede reducir la cantidad de datos comprimiendo o codificando la información de sensor 1037. El convertidor de formato 1019 puede omitir este proceso cuando la conversión de formato no es necesaria. El convertidor de formato 1019 también puede controlar la cantidad de datos que va a transmitirse de acuerdo con un rango de transmisión especificado.
[0472] La unidad de comunicación 1020 se comunica con el servidor 901 y recibe una solicitud de transmisión de datos (solicitud de transmisión para información de sensor) y similares desde el servidor 901.
[0473] El controlador de transmisión 1021 intercambia información, tal como información sobre formatos compatibles, con un interlocutor de comunicación a través de la unidad de comunicación 1020 para establecer comunicación con el interlocutor de comunicación.
[0474] El transmisor de datos 1022 transmite la información de sensor 1037 al servidor 901. La información de sensor 1037 incluye, por ejemplo, información obtenida a través de los sensores 1015, tal como información obtenida por LiDAR, una imagen de luminancia obtenida por una cámara de luz visible, una imagen infrarroja obtenida por una cámara infrarroja, una imagen de profundidad obtenida por un sensor de profundidad, información de posición del sensor e información de velocidad del sensor.
[0475] A continuación se describirá una estructura del servidor 901. La FIG.30 es un diagrama de bloques que muestra una estructura de ejemplo del servidor 901. El servidor 901 recibe información de sensor desde el dispositivo cliente 902 y crea datos tridimensionales basándose en la información de sensor recibida. El servidor 901 actualiza el mapa tridimensional gestionado por el servidor 901 usando los datos tridimensionales creados. El servidor 901 transmite el mapa tridimensional actualizado al dispositivo cliente 902 en respuesta a una solicitud de transmisión para el mapa tridimensional desde el dispositivo cliente 902.
[0476] El servidor 901 incluye un receptor de datos 1111, una unidad de comunicación 1112, un controlador de recepción 1113, un convertidor de formato 1114, un creador de datos tridimensionales 1116, un fusionador de datos tridimensionales 1117, un almacenamiento de datos tridimensionales 1118, un convertidor de formato 1119, una unidad de comunicación 1120, un controlador de transmisión 1121 y un transmisor de datos 1122. El receptor de datos 1111 recibe la información de sensor 1037 desde el dispositivo cliente 902. La información de sensor 1037 incluye, por ejemplo, información obtenida por LiDAR, una imagen de luminancia obtenida por una cámara de luz visible, una imagen infrarroja obtenida por una cámara infrarroja, una imagen de profundidad obtenida por un sensor de profundidad, información de posición del sensor, información de velocidad del sensor y similares.
[0477] La unidad de comunicación 1112 se comunica con el dispositivo cliente 902 y transmite una solicitud de transmisión de datos (por ejemplo, una solicitud de transmisión para información de sensor) y similares al dispositivo cliente 902.
[0478] El controlador de recepción 1113 intercambia información, tal como información sobre formatos compatibles, con un interlocutor de comunicación a través de la unidad de comunicación 1112 para establecer comunicación con el interlocutor de comunicación.
[0479] El convertidor de formato 1114 genera información de sensor 1132 realizando un proceso de descompresión o decodificación cuando la información de sensor 1037 recibida está comprimida o codificada. Cabe señalar que el convertidor de formato 1114 no realiza el proceso de descompresión o decodificación cuando la información de sensor 1037 son datos sin comprimir.
[0480] El creador de datos tridimensionales 1116 genera datos tridimensionales 1134 de un área circundante del dispositivo cliente 902 basándose en la información de sensor 1132. Por ejemplo, el creador de datos tridimensionales 1116 genera datos de nube de puntos con información de color sobre el área circundante del dispositivo cliente 902 usando información obtenida por LiDAR y vídeo de luz visible obtenido por una cámara de luz visible.
[0481] El fusionador de datos tridimensionales 1117 actualiza el mapa tridimensional 1135 fusionando los datos tridimensionales 1134 creados basándose en la información de sensor 1132 con el mapa tridimensional 1135 gestionado por el servidor 901.
[0482] El almacenamiento de datos tridimensionales 1118 almacena el mapa tridimensional 1135 y similares.
[0483] El convertidor de formato 1119 genera el mapa tridimensional 1031 convirtiendo el mapa tridimensional 1135 a un formato compatible con el extremo receptor. Cabe señalar que el convertidor de formato 1119 puede reducir la cantidad de datos comprimiendo o codificando el mapa tridimensional 1135. El convertidor de formato 1119 puede omitir este proceso cuando la conversión de formato no es necesaria. El convertidor de formato 1119 también puede controlar la cantidad de datos que va a transmitirse de acuerdo con un rango de transmisión especificado.
[0484] La unidad de comunicación 1120 se comunica con el dispositivo cliente 902 y recibe una solicitud de transmisión de datos (solicitud de transmisión para mapa tridimensional) y similares desde el dispositivo cliente 902. El controlador de transmisión 1121 intercambia información, tal como información sobre formatos compatibles, con un interlocutor de comunicación a través de la unidad de comunicación 1120 para establecer comunicación con el interlocutor de comunicación.
[0485] El transmisor de datos 1122 transmite el mapa tridimensional 1031 al dispositivo cliente 902. El mapa tridimensional 1031 es datos que incluyen una nube de puntos tal como un WLD o un SWLD. El mapa tridimensional 1031 puede incluir uno de datos comprimidos y datos sin comprimir.
[0486] A continuación se describirá un flujo operativo del dispositivo cliente 902. La FIG.31 es un diagrama de flujo de una operación cuando el dispositivo cliente 902 obtiene el mapa tridimensional.
[0487] El dispositivo cliente 902 primero solicita al servidor 901 transmitir el mapa tridimensional (nube de puntos, etc.) (S1001). En este momento, transmitiendo también la información de posición acerca del dispositivo cliente 902 obtenida mediante GPS y similares, el dispositivo cliente 902 también puede solicitar al servidor 901 transmitir un mapa tridimensional relacionado con esta información de posición.
[0488] A continuación, el dispositivo cliente 902 recibe el mapa tridimensional desde el servidor 901 (S1002). Cuando el mapa tridimensional recibido son datos comprimidos, el dispositivo cliente 902 decodifica el mapa tridimensional recibido y genera un mapa tridimensional sin comprimir (S1003).
[0489] A continuación, el dispositivo cliente 902 crea datos tridimensionales 1034 del área circundante del dispositivo cliente 902 usando la información de sensor 1033 obtenida por los sensores 1015 (S1004). A continuación, el dispositivo cliente 902 estima la ubicación propia del dispositivo cliente 902 usando el mapa tridimensional 1032 recibido desde el servidor 901 y los datos tridimensionales 1034 creados usando la información de sensor 1033 (S1005).
[0490] La FIG.32 es un diagrama de flujo de una operación cuando el dispositivo cliente 902 transmite la información de sensor. El dispositivo cliente 902 primero recibe una solicitud de transmisión para la información de sensor desde el servidor 901 (S1011). El dispositivo cliente 902 que ha recibido la solicitud de transmisión transmite la información de sensor 1037 al servidor 901 (S1012). Cabe señalar que el dispositivo cliente 902 puede generar la información de sensor 1037 comprimiendo cada pieza de información usando un método de compresión adecuado para cada pieza de información, cuando la información de sensor 1033 incluye una pluralidad de piezas de información obtenidas por los sensores 1015.
[0491] A continuación se describirá un flujo operativo del servidor 901. La FIG. 33 es un diagrama de flujo de una operación cuando el servidor 901 obtiene la información de sensor. El servidor 901 primero solicita al dispositivo cliente 902 transmitir la información de sensor (S1021). A continuación, el servidor 901 recibe la información de
sensor 1037 transmitida desde el dispositivo cliente 902 de acuerdo con la solicitud (S1022). A continuación, el servidor 901 crea datos tridimensionales 1134 usando la información de sensor 1037 recibida (S1023). A continuación, el servidor 901 refleja los datos tridimensionales 1134 creados en el mapa tridimensional 1135 (S1024).
[0492] La FIG.34 es un diagrama de flujo de una operación cuando el servidor 901 transmite el mapa tridimensional. El servidor 901 primero recibe una solicitud de transmisión para el mapa tridimensional desde el dispositivo cliente 902 (S1031). El servidor 901 que ha recibido la solicitud de transmisión para el mapa tridimensional transmite el mapa tridimensional al dispositivo cliente 902 (S1032). En este momento, el servidor 901 puede extraer un mapa tridimensional de una vecindad del dispositivo cliente 902 junto con la información de posición acerca del dispositivo cliente 902, y transmitir el mapa tridimensional extraído. El servidor 901 puede comprimir el mapa tridimensional formado por una nube de puntos usando, por ejemplo, un método de compresión de estructura de octree, y transmitir el mapa tridimensional comprimido.
[0493] A continuación, se describirán variantes de la presente realización.
[0494] El servidor 901 crea datos tridimensionales 1134 de una vecindad de una posición del dispositivo cliente 902 usando la información de sensor 1037 recibida desde el dispositivo cliente 902. A continuación, el servidor 901 calcula una diferencia entre los datos tridimensionales 1134 y el mapa tridimensional 1135, alineando los datos tridimensionales 1134 creados con el mapa tridimensional 1135 de la misma área gestionado por el servidor 901. El servidor 901 determina que ha ocurrido un tipo de anomalía en el área circundante del dispositivo cliente 902 cuando la diferencia es mayor o igual que un umbral predeterminado. Por ejemplo, es concebible que ocurra una gran diferencia entre el mapa tridimensional 1135 gestionado por el servidor 901 y los datos tridimensionales 1134 creados basándose en la información de sensor 1037 cuando ocurre subsidencia del terreno y similares debido a un desastre natural tal como un terremoto.
[0495] La información de sensor 1037 puede incluir información que indica al menos uno entre un tipo de sensor, un rendimiento de sensor y un número de modelo de sensor. La información de sensor 1037 también puede estar acompañada de un ID de clase y similares de acuerdo con el rendimiento del sensor. Por ejemplo, cuando la información de sensor 1037 es obtenida por LiDAR, es concebible asignar identificadores al rendimiento del sensor. Un sensor capaz de obtener información con precisión en unidades de varios milímetros es clase 1, un sensor capaz de obtener información con precisión en unidades de varios centímetros es clase 2, y un sensor capaz de obtener información con precisión en unidades de varios metros es clase 3. El servidor 901 puede estimar información de rendimiento del sensor y similares a partir de un número de modelo del dispositivo cliente 902. Por ejemplo, cuando el dispositivo cliente 902 está equipado en un vehículo, el servidor 901 puede determinar información de especificación del sensor a partir de un tipo del vehículo. En este caso, el servidor 901 puede obtener información sobre el tipo del vehículo por adelantado, y la información también puede incluirse en la información de sensor. El servidor 901 puede cambiar un grado de corrección con respecto a los datos tridimensionales 1134 creados usando la información de sensor 1037, utilizando la información de sensor 1037 obtenida. Por ejemplo, cuando el rendimiento del sensor es de alta precisión (clase 1), el servidor 901 no corrige los datos tridimensionales 1134. Cuando el rendimiento del sensor es de baja precisión (clase 3), el servidor 901 corrige los datos tridimensionales 1134 de acuerdo con la precisión del sensor. Por ejemplo, el servidor 901 aumenta el grado (intensidad) de corrección con una disminución de la precisión del sensor. El servidor 901 puede enviar simultáneamente la solicitud de transmisión para la información de sensor a la pluralidad de dispositivos cliente 902 en un determinado espacio. El servidor 901 no necesita utilizar toda la información de sensor para crear los datos tridimensionales 1134 y puede, por ejemplo, seleccionar la información de sensor que va a utilizarse de acuerdo con el rendimiento del sensor, cuando ha recibido una pluralidad de piezas de información de sensor desde la pluralidad de dispositivos cliente 902. Por ejemplo, al actualizar el mapa tridimensional 1135, el servidor 901 puede seleccionar información de sensor de alta precisión (clase 1) de entre la pluralidad de piezas de información de sensor recibidas, y crear los datos tridimensionales 1134 usando la información de sensor seleccionada.
[0496] El servidor 901 no está limitado a ser únicamente un servidor tal como un sistema de monitorización de tráfico basado en la nube, y también puede ser otro dispositivo cliente (montado en vehículo). La FIG. 35 es un diagrama de una estructura de sistema en este caso.
[0497] Por ejemplo, el dispositivo cliente 902C envía una solicitud de transmisión para información de sensor al dispositivo cliente 902A ubicado en las proximidades, y obtiene la información de sensor desde el dispositivo cliente 902A. A continuación, el dispositivo cliente 902C crea datos tridimensionales usando la información de sensor obtenida del dispositivo cliente 902A, y actualiza un mapa tridimensional del dispositivo cliente 902C. Esto permite que el dispositivo cliente 902C genere un mapa tridimensional de un espacio que puede obtenerse desde el dispositivo cliente 902A, y aproveche plenamente el rendimiento del dispositivo cliente 902C. Por ejemplo, tal caso es concebible cuando el dispositivo cliente 902C tiene un alto rendimiento.
[0498] En este caso, al dispositivo cliente 902A que ha proporcionado la información de sensor se le otorgan derechos para obtener el mapa tridimensional de alta precisión generado por el dispositivo cliente 902C. El dispositivo
cliente 902A recibe el mapa tridimensional de alta precisión desde el dispositivo cliente 902C de acuerdo con estos derechos.
[0499] El servidor 901 también puede enviar la solicitud de transmisión de la información de sensor a la pluralidad de dispositivos cliente 902 (dispositivo cliente 902A y dispositivo cliente 902B) ubicados cerca del dispositivo cliente 902C. Cuando un sensor del dispositivo cliente 902A o del dispositivo cliente 902B tiene un alto rendimiento, el dispositivo cliente 902C es capaz de crear los datos tridimensionales utilizando la información de sensor obtenida por este sensor de alto rendimiento.
[0500] La FIG.36 es un diagrama de bloques que muestra una estructura funcional del servidor 901 y del dispositivo cliente 902. El servidor 901 incluye, por ejemplo, un procesador de compresión/decodificación de mapas tridimensionales 1201 que comprime y decodifica el mapa tridimensional y un procesador de compresión/decodificación de información de sensor 1202 que comprime y decodifica la información de sensor. El dispositivo cliente 902 incluye un procesador de decodificación de mapas tridimensionales 1211 y un procesador de compresión de información de sensor 1212. El procesador de decodificación de mapas tridimensionales 1211 recibe datos codificados del mapa tridimensional comprimido, decodifica los datos codificados y obtiene el mapa tridimensional. El procesador de compresión de información de sensor 1212 comprime la propia información de sensor en lugar de los datos tridimensionales creados utilizando la información de sensor obtenida, y transmite al servidor 901 los datos codificados de la información de sensor comprimida. Con esta estructura, el dispositivo cliente 902 no necesita almacenar internamente un procesador que realice un proceso de compresión de los datos tridimensionales del mapa tridimensional (nube de puntos, etc.), siempre que el dispositivo cliente 902 almacene internamente un procesador que realice un proceso de decodificación del mapa tridimensional (nube de puntos, etc.). Esto hace posible limitar los costes, el consumo de energía y similares del dispositivo cliente 902.
[0501] Como se indicó anteriormente, el dispositivo cliente 902 de acuerdo con la presente realización está equipado en el objeto móvil y crea datos tridimensionales 1034 de un área circundante del objeto móvil utilizando información de sensor 1033 que se obtiene a través del sensor 1015 equipado en el objeto móvil e indica una condición circundante del objeto móvil. El dispositivo cliente 902 estima una ubicación propia del objeto móvil utilizando los datos tridimensionales 1034 creados. El dispositivo cliente 902 transmite la información de sensor 1033 obtenida al servidor 901 o a otro objeto móvil.
[0502] Esto permite que el dispositivo cliente 902 transmita la información de sensor 1033 al servidor 901 o similares. Esto hace posible reducir aún más la cantidad de datos de transmisión en comparación con cuando se transmiten los datos tridimensionales. Dado que no existe necesidad de que el dispositivo cliente 902 realice procesos tales como la compresión o la codificación de los datos tridimensionales, es posible reducir la cantidad de procesamiento del dispositivo cliente 902. Como tal, el dispositivo cliente 902 es capaz de reducir la cantidad de datos a transmitir o simplificar la estructura del dispositivo.
[0503] El dispositivo cliente 902 además transmite la solicitud de transmisión del mapa tridimensional al servidor 901 y recibe el mapa tridimensional 1031 desde el servidor 901. En la estimación de la ubicación propia, el dispositivo cliente 902 estima la ubicación propia utilizando los datos tridimensionales 1034 y el mapa tridimensional 1032.
[0504] La información de sensor 1034 incluye al menos una entre información obtenida por un sensor láser, una imagen de luminancia, una imagen infrarroja, una imagen de profundidad, información de posición de sensor o información de velocidad de sensor.
[0505] La información de sensor 1033 incluye información que indica un rendimiento del sensor.
[0506] El dispositivo cliente 902 codifica o comprime la información de sensor 1033 y, en la transmisión de la información de sensor, transmite al servidor 901 u otro objeto móvil 902 la información de sensor 1037 que ha sido codificada o comprimida. Esto permite que el dispositivo cliente 902 reduzca la cantidad de datos a transmitir.
[0507] Por ejemplo, el dispositivo cliente 902 incluye un procesador y una memoria. El procesador realiza los procesos anteriores utilizando la memoria.
[0508] El servidor 901 de acuerdo con la presente realización es capaz de comunicarse con el dispositivo cliente 902 equipado en el objeto móvil y recibe información de sensor 1037 que se obtiene a través del sensor 1015 equipado en el objeto móvil e indica una condición circundante del objeto móvil. El servidor 901 crea datos tridimensionales 1134 de un área circundante del objeto móvil utilizando la información de sensor 1037 recibida. Con esto, el servidor 901 crea datos tridimensionales 1134 utilizando la información de sensor 1037 transmitida desde el dispositivo cliente 902. Esto hace posible reducir aún más la cantidad de datos de transmisión en comparación con cuando el dispositivo cliente 902 transmite los datos tridimensionales. Dado que no existe necesidad de que el dispositivo cliente 902 realice procesos tales como la compresión o la codificación de los
datos tridimensionales, es posible reducir la cantidad de procesamiento del dispositivo cliente 902. Como tal, el servidor 901 es capaz de reducir la cantidad de datos a transmitir o simplificar la estructura del dispositivo. El servidor 901 además transmite una solicitud de transmisión de la información de sensor al dispositivo cliente 902.
[0509] El servidor 901 además actualiza el mapa tridimensional 1135 utilizando los datos tridimensionales 1134 creados y transmite el mapa tridimensional 1135 al dispositivo cliente 902 en respuesta a la solicitud de transmisión del mapa tridimensional 1135 desde el dispositivo cliente 902.
[0510] La información de sensor 1037 incluye al menos una entre información obtenida por un sensor láser, una imagen de luminancia, una imagen infrarroja, una imagen de profundidad, información de posición de sensor o información de velocidad de sensor.
[0511] La información de sensor 1037 incluye información que indica un rendimiento del sensor.
[0512] El servidor 901 además corrige los datos tridimensionales de acuerdo con el rendimiento del sensor. Esto permite que el método de creación de datos tridimensionales mejore la calidad de los datos tridimensionales. En la recepción de la información de sensor, el servidor 901 recibe una pluralidad de piezas de información de sensor 1037 recibidas desde una pluralidad de dispositivos cliente 902 y selecciona la información de sensor 1037 que se utilizará en la creación de los datos tridimensionales 1134, basándose en una pluralidad de piezas de información que indican cada una el rendimiento del sensor incluido en la pluralidad de piezas de información de sensor 1037. Esto permite que el servidor 901 mejore la calidad de los datos tridimensionales 1134.
[0513] El servidor 901 decodifica o descomprime la información de sensor 1037 recibida y crea los datos tridimensionales 1134 utilizando la información de sensor 1132 que ha sido decodificada o descomprimida. Esto permite que el servidor 901 reduzca la cantidad de datos a transmitir.
[0514] Por ejemplo, el servidor 901 incluye un procesador y una memoria. El procesador realiza los procesos anteriores utilizando la memoria.
[0515] Realización 7
[0516] En la presente realización, se describirán métodos de codificación y decodificación de datos tridimensionales que utilizan un proceso de predicción inter.
[0517] La FIG.37 es un diagrama de bloques del dispositivo de codificación de datos tridimensionales 1300 de acuerdo con la presente realización. Este dispositivo de codificación de datos tridimensionales 1300 genera un flujo de bits codificado (en lo sucesivo, también denominado simplemente flujo de bits) que es una señal codificada, mediante la codificación de datos tridimensionales. Como se ilustra en la FIG.37, el dispositivo de codificación de datos tridimensionales 1300 incluye divisor 1301, sustractor 1302, transformador 1303, cuantizador 1304, cuantizador inverso 1305, transformador inverso 1306, sumador 1307, memoria de volumen de referencia 1308, predictor intra 1309, memoria de espacio de referencia 1310, predictor inter 1311, controlador de predicción 1312 y codificador de entropía 1313.
[0518] El divisor 1301 divide una pluralidad de volúmenes (VLM) que son unidades de codificación de cada espacio (SPC) incluido en los datos tridimensionales. El divisor 1301 realiza una representación de octree (convierte en un octree) de los vóxeles en cada volumen. Obsérvese que el divisor 1301 puede convertir los espacios en una representación de octree teniendo los espacios el mismo tamaño que los volúmenes. El divisor 1301 también puede añadir información (información de profundidad, etc.) necesaria para realizar la representación de octree a un encabezado y similares de un flujo de bits.
[0519] El sustractor 1302 calcula una diferencia entre un volumen (volumen objetivo de codificación) emitido por el divisor 1301 y un volumen predicho generado mediante predicción intra o predicción inter, que se describirán más adelante, y emite la diferencia calculada al transformador 1303 como un residual de predicción. La FIG.
[0520] 38 es un diagrama que muestra un ejemplo de cálculo del residual de predicción. Obsérvese que las secuencias de bits del volumen objetivo de codificación y del volumen predicho mostradas aquí son, por ejemplo, información de posición que indica posiciones de puntos tridimensionales incluidos en los volúmenes.
[0521] A continuación, se describirá un orden de escaneo de una representación de octree y de los vóxeles. Un volumen se codifica después de convertirse en una estructura de octree (convertirse en un octree). La estructura de octree incluye nodos y hojas. Cada nodo tiene ocho nodos u hojas, y cada hoja tiene información de vóxel (VXL). La FIG.39 es un diagrama que muestra una estructura de ejemplo de un volumen que incluye vóxeles. La FIG.40 es un diagrama que muestra un ejemplo del volumen mostrado en la FIG. 39 convertido en la estructura de octree. Entre las hojas mostradas en la FIG. 40, las hojas 1, 2 y 3 representan respectivamente VXL 1, VXL 2 y VXL 3, y representan VXL que incluyen un grupo de puntos (en lo sucesivo, VXL activos).
[0522] Un octree se representa mediante, por ejemplo, secuencias binarias de unos y ceros. Por ejemplo, cuando se asigna a los nodos o a los VXL activos un valor de 1 y a todo lo demás un valor de 0, a cada nodo y hoja se le asigna la secuencia binaria mostrada en la FIG.40. Así, esta secuencia binaria se escanea de acuerdo con un orden de escaneo en anchura o en profundidad. Por ejemplo, al escanear en anchura, se obtiene la secuencia binaria mostrada en A de la FIG.41. Al escanear en profundidad, se obtiene la secuencia binaria mostrada en B de la FIG.41. Las secuencias binarias obtenidas mediante este escaneo se codifican mediante codificación de entropía, lo que reduce una cantidad de información.
[0523] A continuación se describirá la información de profundidad en la representación de octree. La profundidad en la representación de octree se utiliza para controlar hasta qué granularidad fina se almacena la información de nube de puntos incluida en un volumen. Al establecer una gran profundidad, es posible reproducir la información de nube de puntos con un nivel más preciso, pero aumenta una cantidad de datos para representar los nodos y las hojas. Sin embargo, al establecer una profundidad pequeña, la cantidad de datos disminuye, pero se pierde parte de la información que originalmente contenía la información de nube de puntos, ya que piezas de información de nube de puntos que incluyen posiciones y colores diferentes pasan a considerarse como piezas de información de nube de puntos que incluyen la misma posición y el mismo color.
[0524] Por ejemplo, la FIG.42 es un diagrama que muestra un ejemplo en el que el octree con una profundidad de 2 mostrado en la FIG.40 se representa con una profundidad de 1. El octree mostrado en la FIG.42 tiene una cantidad de datos menor que el octree mostrado en la FIG.40. En otras palabras, el octree binarizado mostrado en la FIG. 42 tiene una cantidad de bits menor que el octree mostrado en la FIG. 40. La hoja 1 y la hoja 2 mostradas en la FIG.40 están representadas por la hoja 1 mostrada en la FIG.41. En otras palabras, se pierde la información de que la hoja 1 y la hoja 2 están en posiciones diferentes.
[0525] La FIG.43 es un diagrama que muestra un volumen correspondiente al octree mostrado en la FIG.42. VXL 1 y VXL 2 mostrados en la FIG.39 corresponden a VXL 12 mostrado en la FIG.43. En este caso, el dispositivo de codificación de datos tridimensionales 1300 genera información de color de VXL 12 mostrado en la FIG.43 utilizando información de color de VXL 1 y VXL 2 mostrados en la FIG. 39. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 calcula un valor promedio, una mediana, un valor promedio ponderado o similares de la información de color de VXL 1 y VXL 2 como la información de color de VXL 12. De esta manera, el dispositivo de codificación de datos tridimensionales 1300 puede controlar una reducción de la cantidad de datos cambiando la profundidad del octree.
[0526] El dispositivo de codificación de datos tridimensionales 1300 puede establecer la información de profundidad del octree en unidades de mundos, unidades de espacios o unidades de volúmenes. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede añadir la información de profundidad a la información de encabezado del mundo, a la información de encabezado del espacio o a la información de encabezado del volumen. En todos los mundos, espacios y volúmenes asociados con diferentes tiempos, puede utilizarse el mismo valor como la información de profundidad. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede añadir la información de profundidad a la información de encabezado que gestiona los mundos asociados con todos los tiempos.
[0527] Cuando la información de color está incluida en los vóxeles, el transformador 1303 aplica una transformación de frecuencia, p. ej., transformación ortogonal, a un residual de predicción de la información de color de los vóxeles en el volumen. Por ejemplo, el transformador 1303 crea una matriz unidimensional escaneando el residual de predicción en un determinado orden de escaneo. Posteriormente, el transformador 1303 transforma la matriz unidimensional a un dominio de frecuencia aplicando una transformación ortogonal unidimensional a la matriz unidimensional creada. Con esto, cuando un valor del residual de predicción en el volumen es similar, aumenta un valor de un componente de baja frecuencia y disminuye un valor de un componente de alta frecuencia. Como tal, es posible reducir más eficientemente una cantidad de código en el cuantizador 1304. El transformador 1303 no necesita utilizar transformación ortogonal en una dimensión, sino que también puede utilizar transformación ortogonal en dos o más dimensiones. Por ejemplo, el transformador 1303 mapea el residual de predicción a una matriz bidimensional en un determinado orden de escaneo y aplica transformación ortogonal bidimensional a la matriz bidimensional obtenida. El transformador 1303 puede seleccionar un método de transformación ortogonal que se utilizará entre una pluralidad de métodos de transformación ortogonal. En este caso, el dispositivo de codificación de datos tridimensionales 1300 añade al flujo de bits información que indica qué método de transformación ortogonal se utiliza. El transformador 1303 puede seleccionar un método de transformación ortogonal que se utilizará entre una pluralidad de métodos de transformación ortogonal en diferentes dimensiones. En este caso, el dispositivo de codificación de datos tridimensionales 1300 añade al flujo de bits en cuántas dimensiones se utiliza el método de transformación ortogonal.
[0528] Por ejemplo, el transformador 1303 hace coincidir el orden de escaneo del residual de predicción con un orden de escaneo (en anchura, en profundidad o similar) en el octree en el volumen. Esto hace posible reducir la sobrecarga, puesto que no es necesario añadir al flujo de bits información que indique el orden de escaneo del residual de predicción. El transformador 1303 puede aplicar un orden de escaneo diferente del orden de
escaneo del octree. En este caso, el dispositivo de codificación de datos tridimensionales 1300 añade al flujo de bits información que indica el orden de escaneo del residual de predicción. Esto permite que el dispositivo de codificación de datos tridimensionales 1300 codifique eficientemente el residual de predicción. El dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits información (indicador, etc.) que indica si se aplica el orden de escaneo del octree y también puede añadir al flujo de bits información que indica el orden de escaneo del residual de predicción cuando no se aplica el orden de escaneo del octree.
[0529] El transformador 1303 no solo transforma el residual de predicción de la información de color, sino que también puede transformar otra información de atributos incluida en los vóxeles. Por ejemplo, el transformador 1303 puede transformar y codificar información tal como información de reflectancia obtenida al obtener una nube de puntos mediante LiDAR y similares.
[0530] El transformador 1303 puede omitir estos procesos cuando los espacios no incluyen información de atributos tal como información de color. El dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits información (indicador) que indica si se omiten los procesos del transformador 1303.
[0531] El cuantizador 1304 genera un coeficiente cuantizado realizando cuantización utilizando un parámetro de control de cuantización sobre un componente de frecuencia del residual de predicción generado por el transformador 1303. Con esto, la cantidad de información se reduce adicionalmente. El coeficiente cuantizado generado se emite al codificador de entropía 1313. El cuantizador 1304 puede controlar el parámetro de control de cuantización en unidades de mundos, unidades de espacios o unidades de volúmenes. En este caso, el dispositivo de codificación de datos tridimensionales 1300 añade el parámetro de control de cuantización a cada información de encabezado y similares. El cuantizador 1304 puede realizar control de cuantización cambiando un peso por componente de frecuencia del residual de predicción. Por ejemplo, el cuantizador 1304 puede cuantizar con precisión un componente de baja frecuencia y cuantizar de forma aproximada un componente de alta frecuencia. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede añadir a un encabezado un parámetro que expresa un peso de cada componente de frecuencia. El cuantizador 1304 puede omitir estos procesos cuando los espacios no incluyen información de atributos tal como información de color. El dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits información (indicador) que indica si se omiten los procesos del cuantizador 1304.
[0532] El cuantizador inverso 1305 genera un coeficiente cuantizado inverso del residual de predicción realizando cuantización inversa sobre el coeficiente cuantizado generado por el cuantizador 1304 utilizando el parámetro de control de cuantización y emite el coeficiente cuantizado inverso generado al transformador inverso 1306. El transformador inverso 1306 genera un residual de predicción con transformación inversa aplicada aplicando transformación inversa sobre el coeficiente cuantizado inverso generado por el cuantizador inverso 1305. Este residual de predicción con transformación inversa aplicada no necesita coincidir completamente con el residual de predicción emitido por el transformador 1303, puesto que el residual de predicción con transformación inversa aplicada es un residual de predicción que se genera después de la cuantización.
[0533] El sumador 1307 suma, para generar un volumen reconstruido, (i) el residual de predicción con transformación inversa aplicada generado por el transformador inverso 1306 a (ii) un volumen predicho que se genera mediante predicción intra o predicción intra, que se describirán más adelante, y se utiliza para generar un residual de predicción previo a la cuantización. Este volumen reconstruido se almacena en la memoria de volumen de referencia 1308 o en la memoria de espacio de referencia 1310.
[0534] El predictor intra 1309 genera un volumen predicho de un volumen objetivo de codificación utilizando información de atributos de un volumen vecino almacenado en la memoria de volumen de referencia 1308. La información de atributos incluye información de color o una reflectancia de los vóxeles. El predictor intra 1309 genera un valor predicho de información de color o una reflectancia del volumen objetivo de codificación. La FIG.44 es un diagrama para describir una operación del predictor intra 1309. Por ejemplo, el predictor intra 1309 genera el volumen predicho del volumen objetivo de codificación (volumen idx = 3) mostrado en la FIG.
[0535] 44 utilizando un volumen vecino (volumen idx = 0). El volumen idx aquí es información identificadora que se añade a un volumen en un espacio y se asigna un valor diferente a cada volumen. Un orden de asignación de volumen idx puede ser el mismo que un orden de codificación y también puede ser diferente del orden de codificación. Por ejemplo, el predictor intra 1309 utiliza un valor promedio de información de color de vóxeles incluidos en volumen idx = 0, que es un volumen vecino, como el valor predicho de la información de color del volumen objetivo de codificación mostrado en la FIG. 44. En este caso, se genera un residual de predicción deduciendo el valor predicho de la información de color de la información de color de cada vóxel incluido en el volumen objetivo de codificación. Los procesos siguientes son realizados por el transformador 1303 y los procesadores posteriores con respecto a este residual de predicción. En este caso, el dispositivo de codificación de datos tridimensionales 1300 añade al flujo de bits información de volumen vecino e información de modo de predicción. La información de volumen vecino aquí es información que indica un volumen vecino utilizado en la predicción e indica, por ejemplo, el volumen idx del volumen vecino utilizado en la predicción. La información
de modo de predicción aquí indica un modo utilizado para generar el volumen predicho. El modo es, por ejemplo, un modo de valor promedio en el que el valor predicho se genera utilizando un valor promedio de los vóxeles en el volumen vecino, o un modo de mediana en el que el valor predicho se genera utilizando la mediana de los vóxeles en el volumen vecino.
[0536] El predictor intra 1309 puede generar el volumen predicho utilizando una pluralidad de volúmenes vecinos. Por ejemplo, en la estructura mostrada en la FIG.44, el predictor intra 1309 genera el volumen predicho 0 utilizando un volumen con volumen idx = 0 y genera el volumen predicho 1 utilizando un volumen con volumen idx = 1. El predictor intra 1309 genera entonces un promedio del volumen predicho 0 y del volumen predicho 1 como volumen predicho final. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits una pluralidad de volúmenes idx de una pluralidad de volúmenes utilizados para generar el volumen predicho.
[0537] La FIG.45 es un diagrama que muestra esquemáticamente el proceso de predicción inter de acuerdo con la presente realización. El predictor inter 1311 codifica (predice inter) un espacio (SPC) asociado con un determinado tiempo T_Cur utilizando un espacio codificado asociado con un tiempo diferente T_LX. En este caso, el predictor inter 1311 realiza un proceso de codificación aplicando un proceso de rotación y traslación al espacio codificado asociado con el tiempo diferente T_LX.
[0538] El dispositivo de codificación de datos tridimensionales 1300 añade al flujo de bits información RT relacionada con un proceso de rotación y traslación adecuado para el espacio asociado con el tiempo diferente T_LX. El tiempo diferente T_LX es, por ejemplo, el tiempo T_L0 anterior al determinado tiempo T_Cur. En este punto, el dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits información RT RT_L0 relacionada con un proceso de rotación y traslación adecuado para un espacio asociado con el tiempo T_L0. Alternativamente, el tiempo diferente T_LX es, por ejemplo, el tiempo T_L1 posterior al determinado tiempo T_Cur. En este punto, el dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits información RT RT_L1 relacionada con un proceso de rotación y traslación adecuado para un espacio asociado con el tiempo T_L1.
[0539] Alternativamente, el predictor inter 1311 codifica (predicción bidireccional) con referencia a los espacios asociados con el tiempo T_L0 y el tiempo T_L1 que difieren entre sí. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits tanto la información RT RT_L0 como la información RT RT_L1 relacionadas con el proceso de rotación y traslación adecuado para dichos espacios.
[0540] Obsérvese que T_L0 se ha descrito como anterior a T_Cur y T_L1 como posterior a T_Cur, pero no están necesariamente limitados a ello. Por ejemplo, T_L0 y T_L1 pueden ambos ser anteriores a T_Cur. T_L0 y T_L1 también pueden ambos ser posteriores a T_Cur.
[0541] El dispositivo de codificación de datos tridimensionales 1300 puede añadir al flujo de bits información RT relacionada con un proceso de rotación y traslación adecuado para espacios asociados con tiempos diferentes, cuando codifica con referencia a cada uno de los espacios. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 gestiona una pluralidad de espacios codificados a los que se hará referencia utilizando dos listas de referencia (lista L0 y lista L1). Cuando un primer espacio de referencia en la lista L0 es L0R0, un segundo espacio de referencia en la lista L0 es L0R1, un primer espacio de referencia en la lista L1 es L1R0 y un segundo espacio de referencia en la lista L1 es L1R1, el dispositivo de codificación de datos tridimensionales 1300 añade al flujo de bits la información RT RT_L0R0 de L0R0, la información RT RT_L0R1 de L0R1, la información RT RT_L1R0 de L1R0 y la información RT RT_L1R1 de L1R1. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 añade estas piezas de información RT a un encabezado y similares del flujo de bits.
[0542] El dispositivo de codificación de datos tridimensionales 1300 determina si aplicar rotación y traslación por espacio de referencia cuando codifica con referencia a espacios de referencia asociados con tiempos diferentes. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede añadir a la información de encabezado y similares del flujo de bits información (indicador RT, etc.) que indica si la rotación y la traslación se aplican por espacio de referencia. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 calcula la información RT y un valor de error Punto Más Cercano Iterativo (ICP), utilizando un algoritmo ICP por espacio de referencia al que se hará referencia desde el espacio objetivo de codificación. El dispositivo de codificación de datos tridimensionales 1300 determina que la rotación y la traslación no necesitan realizarse y establece el indicador RT en OFF cuando el valor de error ICP es inferior o igual a un valor fijo predeterminado. Por el contrario, el dispositivo de codificación de datos tridimensionales 1300 establece el indicador RT en ON y añade la información RT al flujo de bits cuando el valor fijo anterior es superado por el valor de error ICP.
[0543] La FIG. 46 es un diagrama que muestra un ejemplo de sintaxis que se añadirá a un encabezado de la información RT y del indicador RT. Obsérvese que una cantidad de bits asignada a cada sintaxis puede decidirse basándose en un rango de esta sintaxis. Por ejemplo, cuando se incluyen ocho espacios de referencia
en la lista de referencia L0, pueden asignarse 3 bits a MaxRefSpc_l0. La cantidad de bits que se asignará puede ser variable de acuerdo con un valor que cada sintaxis puede tomar y también puede ser fija independientemente del valor que cada sintaxis puede tomar. Cuando la cantidad de bits que se asignará es fija, el dispositivo de codificación de datos tridimensionales 1300 puede añadir esta cantidad fija de bits a otra información de encabezado.
[0544] MaxRefSpc_l0 mostrado en la FIG. 46 indica un número de espacios de referencia incluidos en la lista de referencia L0. RT_flag_l0[i] es un indicador RT del espacio de referencia i en la lista de referencia L0. Cuando RT_flag_l0[i] es 1, la rotación y la traslación se aplican al espacio de referencia i. Cuando RT_flag_l0[i] es 0, la rotación y la traslación no se aplican al espacio de referencia i.
[0545] R_l0[i] y T_l0[i] son información RT del espacio de referencia i en la lista de referencia L0. R_l0[i] es información de rotación del espacio de referencia i en la lista de referencia L0. La información de rotación indica el contenido del proceso de rotación aplicado, y es, por ejemplo, una matriz de rotación o un cuaternión. T_l0[i] es información de traslación del espacio de referencia i en la lista de referencia L0. La información de traslación indica el contenido del proceso de traslación aplicado, y es, por ejemplo, un vector de traslación.
[0546] MaxRefspc_l1 indica una cantidad de espacios de referencia incluidos en la lista de referencia L1. RT_flag_l1[i] es un indicador RT del espacio de referencia i en la lista de referencia L1. Cuando RT_flag_l1[i] es 1, la rotación y la traslación se aplican al espacio de referencia i. Cuando RT_flag_l1[i] es 0, la rotación y la traslación no se aplican al espacio de referencia i.
[0547] R_l1[i] y T_l1[i] son información RT del espacio de referencia i en la lista de referencia L1. R_l1[i] es información de rotación del espacio de referencia i en la lista de referencia L1. La información de rotación indica el contenido del proceso de rotación aplicado, y es, por ejemplo, una matriz de rotación o un cuaternión. T_l1[i] es información de traslación del espacio de referencia i en la lista de referencia L1. La información de traslación indica el contenido del proceso de traslación aplicado, y es, por ejemplo, un vector de traslación.
[0548] El predictor inter 1311 genera el volumen predicho del volumen objetivo de codificación usando información sobre un espacio de referencia codificado almacenado en la memoria de espacios de referencia 1310. Como se indicó anteriormente, antes de generar el volumen predicho del volumen objetivo de codificación, el predictor inter 1311 calcula información RT en un espacio objetivo de codificación y un espacio de referencia usando un algoritmo ICP, para aproximar una relación posicional global entre el espacio objetivo de codificación y el espacio de referencia. El predictor inter 1311 obtiene entonces el espacio de referencia B aplicando un proceso de rotación y traslación al espacio de referencia usando la información RT calculada. Posteriormente, el predictor inter 1311 genera el volumen predicho del volumen objetivo de codificación en el espacio objetivo de codificación usando información en el espacio de referencia B. El dispositivo de codificación de datos tridimensionales 1300 adjunta, a información de encabezado y similares del espacio objetivo de codificación, la información RT usada para obtener el espacio de referencia B.
[0549] De esta manera, el predictor inter 1311 es capaz de mejorar la precisión del volumen predicho generando el volumen predicho usando la información del espacio de referencia, después de aproximar la relación posicional global entre el espacio objetivo de codificación y el espacio de referencia, aplicando un proceso de rotación y traslación al espacio de referencia. Es posible reducir la cantidad de código puesto que es posible limitar el residual de predicción. Nótese que se ha descrito un ejemplo en el que ICP se realiza usando el espacio objetivo de codificación y el espacio de referencia, pero no está necesariamente limitado a ello. Por ejemplo, el predictor inter 1311 puede calcular la información RT realizando ICP usando al menos uno de: (i) un espacio objetivo de codificación en el que una cantidad de vóxeles o de nubes de puntos se poda; o (ii) un espacio de referencia en el que una cantidad de vóxeles o de nubes de puntos se poda, para reducir la cantidad de procesamiento. Cuando el valor de error ICP obtenido como resultado del ICP es menor que un primer umbral predeterminado, es decir, cuando por ejemplo la relación posicional entre el espacio objetivo de codificación y el espacio de referencia es similar, el predictor inter 1311 determina que un proceso de rotación y traslación no es necesario, y el proceso de rotación y traslación no necesita realizarse. En este caso, el dispositivo de codificación de datos tridimensionales 1300 puede controlar la sobrecarga al no adjuntar la información RT al flujo de bits.
[0550] Cuando el valor de error ICP es mayor que un segundo umbral predeterminado, el predictor inter 1311 determina que un cambio de forma entre los espacios es grande, y la predicción intra puede aplicarse a todos los volúmenes del espacio objetivo de codificación. En lo sucesivo, los espacios a los que se aplica la predicción intra se denominarán espacios intra. El segundo umbral es mayor que el primer umbral anterior. La presente realización no está limitada a ICP, y puede usarse cualquier tipo de método siempre que el método calcule la información RT usando dos conjuntos de vóxeles o dos conjuntos de nubes de puntos.
[0551] Cuando información de atributos, por ejemplo información de forma o de color, está incluida en los datos tridimensionales, el predictor inter 1311 busca, por ejemplo, un volumen cuya información de atributo, por ejemplo información de forma o de color, sea la más similar al volumen objetivo de codificación en el espacio de referencia, como el volumen predicho del volumen objetivo de codificación en el espacio objetivo de
codificación. Este espacio de referencia es, por ejemplo, un espacio de referencia sobre el cual se ha realizado el proceso de rotación y traslación anterior. El predictor inter 1311 genera el volumen predicho usando el volumen (volumen de referencia) obtenido mediante la búsqueda. La FIG.47 es un diagrama para describir una operación de generación del volumen predicho. Cuando se codifica el volumen objetivo de codificación (volumen idx = 0) mostrado en la FIG.47 usando predicción inter, el predictor inter 1311 busca un volumen con el residual de predicción más pequeño, que es la diferencia entre el volumen objetivo de codificación y el volumen de referencia, mientras explora secuencialmente el volumen de referencia en el espacio de referencia. El predictor inter 1311 selecciona el volumen con el residual de predicción más pequeño como el volumen predicho. Los residuales de predicción del volumen objetivo de codificación y del volumen predicho se codifican mediante los procesos realizados por el transformador 1303 y los procesadores posteriores. El residual de predicción aquí es una diferencia entre la información de atributos del volumen objetivo de codificación y la información de atributos del volumen predicho. El dispositivo de codificación de datos tridimensionales 1300 adjunta, al encabezado y similares del flujo de bits, el volumen idx del volumen de referencia en el espacio de referencia, como el volumen predicho.
[0552] En el ejemplo mostrado en la FIG.47, el volumen de referencia con volumen idx = 4 del espacio de referencia L0R0 se selecciona como el volumen predicho del volumen objetivo de codificación. Los residuales de predicción del volumen objetivo de codificación y del volumen de referencia, y el volumen idx del volumen de referencia = 4 se codifican entonces y se adjuntan al flujo de bits.
[0553] Nótese que se ha descrito un ejemplo en el que se genera el volumen predicho de la información de atributo, pero el mismo proceso puede aplicarse al volumen predicho de la información de posición.
[0554] El controlador de predicción 1312 controla si codificar el volumen objetivo de codificación usando predicción intra o predicción inter. Un modo que incluye predicción intra y predicción inter se denomina aquí modo de predicción. Por ejemplo, el controlador de predicción 1312 calcula el residual de predicción cuando el volumen objetivo de codificación se predice usando predicción intra y el residual de predicción cuando el volumen objetivo de codificación se predice usando predicción inter como valores de evaluación, y selecciona el modo de predicción cuyo valor de evaluación es menor. Nótese que el controlador de predicción 1312 puede calcular una cantidad de código real aplicando transformación ortogonal, cuantización y codificación entrópica al residual de predicción de la predicción intra y al residual de predicción de la predicción inter, y seleccionar un modo de predicción usando la cantidad de código calculada como valor de evaluación. Información de sobrecarga (información de volumen idx del volumen de referencia, etc.) aparte del residual de predicción puede añadirse al valor de evaluación. El controlador de predicción 1312 puede seleccionar continuamente la predicción intra cuando se ha decidido por adelantado codificar el espacio objetivo de codificación usando espacio intra.
[0555] El codificador entrópico 1313 genera una señal codificada (flujo de bits codificado) mediante codificación de longitud variable del coeficiente cuantizado, que es una entrada procedente del cuantizador 1304. Específicamente, el codificador entrópico 1313, por ejemplo, binariza el coeficiente cuantizado y codifica aritméticamente la señal binaria obtenida.
[0556] A continuación se describirá un dispositivo de decodificación de datos tridimensionales que decodifica la señal codificada generada por el dispositivo de codificación de datos tridimensionales 1300. La FIG. 48 es un diagrama de bloques de un dispositivo de decodificación de datos tridimensionales 1400 de acuerdo con la presente realización. Este dispositivo de decodificación de datos tridimensionales 1400 incluye un decodificador entrópico 1401, un cuantizador inverso 1402, un transformador inverso 1403, un sumador 1404, una memoria de volúmenes de referencia 1405, un predictor intra 1406, una memoria de espacios de referencia 1407, un predictor inter 1408 y un controlador de predicción 1409.
[0557] El decodificador entrópico 1401 decodifica de longitud variable la señal codificada (flujo de bits codificado). Por ejemplo, el decodificador entrópico 1401 genera una señal binaria mediante decodificación aritmética de la señal codificada, y genera un coeficiente cuantizado usando la señal binaria generada.
[0558] El cuantizador inverso 1402 genera un coeficiente cuantizado inverso mediante cuantización inversa del coeficiente cuantizado introducido desde el decodificador entrópico 1401, usando un parámetro de cuantización adjuntado al flujo de bits y similares.
[0559] El transformador inverso 1403 genera un residual de predicción mediante transformación inversa del coeficiente cuantizado inverso introducido desde el cuantizador inverso 1402. Por ejemplo, el transformador inverso 1403 genera el residual de predicción mediante transformación ortogonal inversa del coeficiente cuantizado inverso, basándose en información adjuntada al flujo de bits.
[0560] El sumador 1404 suma, para generar un volumen reconstruido, (i) el residual de predicción generado por el transformador inverso 1403 a (ii) un volumen predicho generado mediante predicción intra o predicción intra. Este volumen reconstruido se emite como datos tridimensionales decodificados y se almacena en la memoria de volúmenes de referencia 1405 o en la memoria de espacios de referencia 1407.
[0561] El predictor intra 1406 genera un volumen predicho mediante predicción intra usando un volumen de referencia en la memoria de volúmenes de referencia 1405 e información adjuntada al flujo de bits. Específicamente, el predictor intra 1406 obtiene información de volumen vecino (por ejemplo, volumen idx) adjuntada al flujo de bits e información de modo de predicción, y genera el volumen predicho mediante un modo indicado por la información de modo de predicción, usando un volumen vecino indicado en la información de volumen vecino. Nótese que los detalles de estos procesos son los mismos que los procesos anteriormente mencionados realizados por el predictor intra 1309, excepto por la información adjuntada al flujo de bits que se usa.
[0562] El predictor inter 1408 genera un volumen predicho mediante predicción inter usando un espacio de referencia en la memoria de espacios de referencia 1407 e información adjuntada al flujo de bits. Específicamente, el predictor inter 1408 aplica un proceso de rotación y traslación al espacio de referencia usando la información RT por espacio de referencia adjuntada al flujo de bits, y genera el volumen predicho usando el espacio de referencia rotado y trasladado. Nótese que cuando un indicador RT está presente en el flujo de bits por espacio de referencia, el predictor inter 1408 aplica un proceso de rotación y traslación al espacio de referencia de acuerdo con el indicador RT. Nótese que los detalles de estos procesos son los mismos que los procesos anteriormente mencionados realizados por el predictor inter 1311, excepto por la información adjuntada al flujo de bits que se usa.
[0563] El controlador de predicción 1409 controla si decodificar un volumen objetivo de decodificación usando predicción intra o predicción inter. Por ejemplo, el controlador de predicción 1409 selecciona predicción intra o predicción inter de acuerdo con información que está adjuntada al flujo de bits e indica el modo de predicción que va a usarse. Nótese que el controlador de predicción 1409 puede seleccionar continuamente la predicción intra cuando se ha decidido por adelantado decodificar el espacio objetivo de decodificación usando espacio intra.
[0564] En lo sucesivo, se describirán variaciones de la presente realización. En la presente realización, se ha descrito un ejemplo en el que la rotación y la traslación se aplican en unidades de espacios, pero la rotación y la traslación también pueden aplicarse en unidades más pequeñas. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 puede dividir un espacio en subespacios y aplicar rotación y traslación en unidades de subespacios. En este caso, el dispositivo de codificación de datos tridimensionales 1300 genera información RT por subespacio y adjunta la información RT generada a un encabezado y similares del flujo de bits. El dispositivo de codificación de datos tridimensionales 1300 puede aplicar rotación y traslación en unidades de volúmenes, que es una unidad de codificación. En este caso, el dispositivo de codificación de datos tridimensionales 1300 genera información RT en unidades de volúmenes codificados y adjunta la información RT generada a un encabezado y similares del flujo de bits. Lo anterior también puede combinarse. En otras palabras, el dispositivo de codificación de datos tridimensionales 1300 puede aplicar rotación y traslación en unidades grandes y posteriormente aplicar rotación y traslación en unidades pequeñas. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 puede aplicar rotación y traslación en unidades de espacios y también puede aplicar diferentes rotaciones y traslaciones a cada uno de una pluralidad de volúmenes incluidos en los espacios obtenidos.
[0565] En la presente realización, se ha descrito un ejemplo en el que se aplica rotación y traslación al espacio de referencia, pero no está necesariamente limitado a ello. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 puede aplicar un proceso de escalado y cambiar un tamaño de los datos tridimensionales. El dispositivo de codificación de datos tridimensionales 1300 también puede aplicar uno o dos de la rotación, la traslación y el escalado. Cuando se aplican los procesos en múltiples etapas y unidades diferentes como se indicó anteriormente, un tipo de los procesos aplicados en cada unidad puede diferir. Por ejemplo, la rotación y la traslación pueden aplicarse en unidades de espacios, y la traslación puede aplicarse en unidades de volúmenes.
[0566] Debe observarse que estas variaciones también son aplicables al dispositivo de decodificación de datos tridimensionales 1400.
[0567] Como se indicó anteriormente, el dispositivo de codificación de datos tridimensionales 1300 de acuerdo con la presente realización realiza los siguientes procesos. La FIG. 48 es un diagrama de flujo del proceso de predicción inter realizado por el dispositivo de codificación de datos tridimensionales 1300.
[0568] El dispositivo de codificación de datos tridimensionales 1300 genera información de posición predicha (por ejemplo, volumen predicho) usando información de posición sobre puntos tridimensionales incluidos en datos tridimensionales de referencia (por ejemplo, espacio de referencia) asociados con un tiempo diferente de un tiempo asociado con datos tridimensionales actuales (por ejemplo, espacio objetivo de codificación) (S1301). Específicamente, el dispositivo de codificación de datos tridimensionales 1300 genera la información de posición predicha aplicando un proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia.
[0569] Debe observarse que el dispositivo de codificación de datos tridimensionales 1300 puede realizar un proceso de rotación y traslación usando una primera unidad (por ejemplo, espacios), y puede realizar la generación de
la información de posición predicha usando una segunda unidad (por ejemplo, volúmenes) que es más pequeña que la primera unidad. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 busca un volumen entre una pluralidad de volúmenes incluidos en el espacio de referencia rotado y trasladado, cuya información de posición difiere en menor medida de la información de posición del volumen objetivo de codificación incluido en el espacio objetivo de codificación. Debe observarse que el dispositivo de codificación de datos tridimensionales 1300 puede realizar el proceso de rotación y traslación, y la generación de la información de posición predicha en la misma unidad.
[0570] El dispositivo de codificación de datos tridimensionales 1300 puede generar la información de posición predicha aplicando (i) un primer proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia, y (ii) un segundo proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales obtenidos mediante el primer proceso de rotación y traslación, usando el primer proceso de rotación y traslación una primera unidad (por ejemplo, espacios) y usando el segundo proceso de rotación y traslación una segunda unidad (por ejemplo, volúmenes) que es más pequeña que la primera unidad.
[0571] Por ejemplo, como se ilustra en la FIG.41, la información de posición sobre los puntos tridimensionales y la información de posición predicha se representan usando una estructura de octree. Por ejemplo, la información de posición sobre los puntos tridimensionales y la información de posición predicha se expresan en un orden de escaneo que prioriza una anchura sobre una profundidad en la estructura de octree. Por ejemplo, la información de posición sobre los puntos tridimensionales y la información de posición predicha se expresan en un orden de escaneo que prioriza una profundidad sobre una anchura en la estructura de octree.
[0572] Como se ilustra en la FIG.46, el dispositivo de codificación de datos tridimensionales 1300 codifica un indicador RT que indica si aplicar el proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia. En otras palabras, el dispositivo de codificación de datos tridimensionales 1300 genera la señal codificada (flujo de bits codificado) que incluye el indicador RT. El dispositivo de codificación de datos tridimensionales 1300 codifica información RT que indica contenidos del proceso de rotación y traslación. En otras palabras, el dispositivo de codificación de datos tridimensionales 1300 genera la señal codificada (flujo de bits codificado) que incluye la información RT. Debe observarse que el dispositivo de codificación de datos tridimensionales 1300 puede codificar la información RT cuando el indicador RT indica aplicar el proceso de rotación y traslación, y no necesita codificar la información RT cuando el indicador RT indica no aplicar el proceso de rotación y traslación.
[0573] Los datos tridimensionales incluyen, por ejemplo, la información de posición sobre los puntos tridimensionales y la información de atributos (información de color, etc.) de cada punto tridimensional. El dispositivo de codificación de datos tridimensionales 1300 genera información de atributos predicha usando la información de atributos de los puntos tridimensionales incluidos en los datos tridimensionales de referencia (S1302).
[0574] A continuación, el dispositivo de codificación de datos tridimensionales 1300 codifica la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales, usando la información de posición predicha. Por ejemplo, como se ilustra en FIG. 38, el dispositivo de codificación de datos tridimensionales 1300 calcula información de posición diferencial, siendo la información de posición diferencial una diferencia entre la información de posición predicha y la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales (S1303).
[0575] El dispositivo de codificación de datos tridimensionales 1300 codifica la información de atributos de los puntos tridimensionales incluidos en los datos tridimensionales actuales, usando la información de atributos predicha. Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 calcula información de atributos diferencial, siendo la información de atributos diferencial una diferencia entre la información de atributos predicha y la información de atributos sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales (S1304). A continuación, el dispositivo de codificación de datos tridimensionales 1300 realiza transformación y cuantización sobre la información de atributos diferencial calculada (S1305).
[0576] Por último, el dispositivo de codificación de datos tridimensionales 1300 codifica (por ejemplo, codifica entrópicamente) la información de posición diferencial y la información de atributos diferencial cuantizada (S1036). En otras palabras, el dispositivo de codificación de datos tridimensionales 1300 genera la señal codificada (flujo de bits codificado) que incluye la información de posición diferencial y la información de atributos diferencial.
[0577] Debe observarse que cuando la información de atributos no está incluida en los datos tridimensionales, el dispositivo de codificación de datos tridimensionales 1300 no necesita realizar las etapas S1302, S1304 y S1305. El dispositivo de codificación de datos tridimensionales 1300 también puede realizar solo una de la codificación de la información de posición sobre los puntos tridimensionales y la codificación de la información de atributos de los puntos tridimensionales.
[0578] Un orden de los procesos mostrados en la FIG. 49 es meramente un ejemplo y no está limitado a ello. Por ejemplo, dado que los procesos con respecto a la información de posición (S1301 y S1303) y los procesos con respecto a la información de atributos (S1302, S1304 y S1305) están separados entre sí, pueden realizarse en un orden de elección, y una porción de los mismos también puede realizarse en paralelo.
[0579] Con lo anterior, el dispositivo de codificación de datos tridimensionales 1300 de acuerdo con la presente realización genera información de posición predicha usando información de posición sobre puntos tridimensionales incluidos en datos tridimensionales de referencia asociados con un tiempo diferente de un tiempo asociado con datos tridimensionales actuales; y codifica información de posición diferencial, que es una diferencia entre la información de posición predicha y la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales. Esto hace posible mejorar la eficiencia de codificación dado que es posible reducir la cantidad de datos de la señal codificada.
[0580] El dispositivo de codificación de datos tridimensionales 1300 de acuerdo con la presente realización genera información de atributos predicha usando información de atributos sobre puntos tridimensionales incluidos en datos tridimensionales de referencia; y codifica información de atributos diferencial, que es una diferencia entre la información de atributos predicha y la información de atributos sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales. Esto hace posible mejorar la eficiencia de codificación dado que es posible reducir la cantidad de datos de la señal codificada.
[0581] Por ejemplo, el dispositivo de codificación de datos tridimensionales 1300 incluye un procesador y una memoria. El procesador usa la memoria para realizar los procesos anteriores.
[0582] La FIG.48 es un diagrama de flujo del proceso de predicción inter realizado por el dispositivo de decodificación de datos tridimensionales 1400.
[0583] El dispositivo de decodificación de datos tridimensionales 1400 decodifica (por ejemplo, decodifica entrópicamente) la información de posición diferencial y la información de atributos diferencial a partir de la señal codificada (flujo de bits codificado) (S1401).
[0584] El dispositivo de decodificación de datos tridimensionales 1400 decodifica, a partir de la señal codificada, un indicador RT que indica si aplicar el proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia. El dispositivo de decodificación de datos tridimensionales 1400 codifica información RT que indica contenidos del proceso de rotación y traslación. Debe observarse que el dispositivo de decodificación de datos tridimensionales 1400 puede decodificar la información RT cuando el indicador RT indica aplicar el proceso de rotación y traslación, y no necesita decodificar la información RT cuando el indicador RT indica no aplicar el proceso de rotación y traslación.
[0585] A continuación, el dispositivo de decodificación de datos tridimensionales 1400 realiza transformación inversa y cuantización inversa sobre la información de atributos diferencial decodificada (S1402).
[0586] A continuación, el dispositivo de decodificación de datos tridimensionales 1400 genera información de posición predicha (por ejemplo, volumen predicho) usando la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia (por ejemplo, espacio de referencia) asociados con un tiempo diferente de un tiempo asociado con los datos tridimensionales actuales (por ejemplo, espacio objetivo de decodificación) (S1403). Específicamente, el dispositivo de decodificación de datos tridimensionales 1400 genera la información de posición predicha aplicando un proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia.
[0587] Más específicamente, cuando el indicador RT indica aplicar el proceso de rotación y traslación, el dispositivo de decodificación de datos tridimensionales 1400 aplica el proceso de rotación y traslación sobre la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia indicada en la información RT. En contraste, cuando el indicador RT indica no aplicar el proceso de rotación y traslación, el dispositivo de decodificación de datos tridimensionales 1400 no aplica el proceso de rotación y traslación sobre la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia.
[0588] Debe observarse que el dispositivo de decodificación de datos tridimensionales 1400 puede realizar el proceso de rotación y traslación usando una primera unidad (por ejemplo, espacios), y puede realizar la generación de la información de posición predicha usando una segunda unidad (por ejemplo, volúmenes) que es más pequeña que la primera unidad. Debe observarse que el dispositivo de decodificación de datos tridimensionales 1400 puede realizar el proceso de rotación y traslación, y la generación de la información de posición predicha en la misma unidad.
[0589] El dispositivo de decodificación de datos tridimensionales 1400 puede generar la información de posición predicha aplicando (i) un primer proceso de rotación y traslación a la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales de referencia, y (ii) un segundo proceso de rotación y
traslación a la información de posición sobre los puntos tridimensionales obtenidos mediante el primer proceso de rotación y traslación, usando el primer proceso de rotación y traslación una primera unidad (por ejemplo, espacios) y usando el segundo proceso de rotación y traslación una segunda unidad (por ejemplo, volúmenes) que es más pequeña que la primera unidad.
[0590] Por ejemplo, como se ilustra en la FIG.41, la información de posición sobre los puntos tridimensionales y la información de posición predicha se representan usando una estructura de octree. Por ejemplo, la información de posición sobre los puntos tridimensionales y la información de posición predicha se expresan en un orden de escaneo que prioriza una anchura sobre una profundidad en la estructura de octree. Por ejemplo, la información de posición sobre los puntos tridimensionales y la información de posición predicha se expresan en un orden de escaneo que prioriza una profundidad sobre una anchura en la estructura de octree.
[0591] El dispositivo de decodificación de datos tridimensionales 1400 genera información de atributos predicha usando la información de atributos de los puntos tridimensionales incluidos en los datos tridimensionales de referencia (S1404).
[0592] A continuación, el dispositivo de decodificación de datos tridimensionales 1400 restablece la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales, decodificando información de posición codificada incluida en una señal codificada, usando la información de posición predicha. La información de posición codificada aquí es la información de posición diferencial. El dispositivo de decodificación de datos tridimensionales 1400 restablece la información de posición sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales, añadiendo la información de posición diferencial a la información de posición predicha (S1405).
[0593] El dispositivo de decodificación de datos tridimensionales 1400 restablece la información de atributos de los puntos tridimensionales incluidos en los datos tridimensionales actuales, decodificando información de atributos codificada incluida en una señal codificada, usando la información de atributos predicha. La información de atributos codificada aquí es la información de posición diferencial. El dispositivo de decodificación de datos tridimensionales 1400 restablece la información de atributos sobre los puntos tridimensionales incluidos en los datos tridimensionales actuales, añadiendo la información de atributos diferencial a la información de atributos predicha (S1406).
[0594] Debe observarse que cuando la información de atributos no está incluida en los datos tridimensionales, el dispositivo de decodificación de datos tridimensionales 1400 no necesita realizar las etapas S1402, S1404 y S1406. El dispositivo de decodificación de datos tridimensionales 1400 también puede realizar solo una de la decodificación de la información de posición sobre los puntos tridimensionales y la decodificación de la información de atributos de los puntos tridimensionales.
[0595] Un orden de los procesos mostrados en la FIG.50 es meramente un ejemplo y no está limitado al mismo. Por ejemplo, dado que los procesos con respecto a la información de posición (S1403 y S1405) y los procesos con respecto a la información de atributos (S1402, S1404 y S1406) están separados entre sí, pueden realizarse en un orden de elección, y una porción de los mismos también puede realizarse en paralelo.
[0596] Realización 8
[0597] La información de una nube de puntos tridimensional incluye información geométrica (geometría) e información de atributos (atributo). La información geométrica incluye coordenadas (coordenada x, coordenada y, coordenada z) con respecto a un determinado punto. Cuando se codifica información geométrica, se usa un método de representar la posición de cada uno de los puntos tridimensionales en representación de octree y codificar la información de octree para reducir una cantidad de código en lugar de codificar directamente las coordenadas del punto tridimensional.
[0598] Por otro lado, la información de atributos incluye información que indica, por ejemplo, información de color (RGB, YUV, etc.) de cada punto tridimensional, una reflectancia y un vector normal. Por ejemplo, un dispositivo de codificación de datos tridimensionales es capaz de codificar información de atributos usando un método de codificación diferente de un método usado para codificar información geométrica.
[0599] En la presente realización, se explica un método de codificación de información de atributos. Debe observarse que, en la presente realización, el método se explica basándose en un caso de ejemplo que usa valores enteros como valores de información de atributos. Por ejemplo, cuando cada uno de los componentes de color RGB o YUV es de una precisión de 8 bits, el componente de color es un valor entero en un intervalo de 0 a 255. Cuando un valor de reflectancia es de una precisión de 10 bits, el valor de reflectancia es un entero en un intervalo de 0 a 1023. Debe observarse que, cuando la precisión de bits de la información de atributos es una precisión decimal, el dispositivo de codificación de datos tridimensionales puede multiplicar el valor por un valor de escala para redondearlo a un valor entero de modo que el valor de la información de atributos se convierta en un valor entero. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir el valor de escala a, por ejemplo, un encabezado de un flujo de bits.
[0600] Como método de codificación de información de atributos de un punto tridimensional, es concebible calcular un valor predicho de la información de atributos del punto tridimensional y codificar una diferencia (residual de predicción) entre el valor original de la información de atributos y el valor predicho. Por ejemplo, cuando el valor de información de atributos en el punto tridimensional p es Ap y un valor predicho es Pp, el dispositivo de codificación de datos tridimensionales codifica el valor absoluto diferencial Diffp = |Ap - Pp|. En este caso, cuando puede generarse un valor predicho Pp de alta precisión, el valor absoluto diferencial Diffp es pequeño. Así, por ejemplo, es posible reducir la cantidad de código codificando entrópicamente el valor absoluto diferencial Diffp usando una tabla de codificación que reduce más una cantidad de bits de ocurrencia cuando el valor absoluto diferencial Diffp es más pequeño.
[0601] Como método de generación de un valor de predicción de información de atributos, es concebible usar información de atributos de un punto tridimensional de referencia que es otro punto tridimensional que es vecino a un punto tridimensional actual que va a codificarse. Aquí, un punto tridimensional de referencia es un punto tridimensional en un intervalo de una distancia predeterminada desde el punto tridimensional actual. Por ejemplo, cuando existen el punto tridimensional actual p = (x1, y1, z1) y el punto tridimensional q = (x2, y2, z2), el dispositivo de codificación de datos tridimensionales calcula la distancia euclidiana d (p, q) entre el punto tridimensional p y el punto tridimensional q representada por (Ecuación A1).
[0602] Mat.1
[0605]
[0608] El dispositivo de codificación de datos tridimensionales determina que la posición del punto tridimensional q está más cerca de la posición del punto tridimensional actual p cuando la distancia euclidiana d (p, q) es menor que el valor umbral predeterminado THd, y determina usar el valor de la información de atributos del punto tridimensional q para generar un valor predicho de la información de atributos del punto tridimensional actual p. Debe observarse que el método de cálculo de la distancia puede ser otro método, y puede usarse una distancia de Mahalanobis o similar. Además, el dispositivo de codificación de datos tridimensionales puede determinar no usar, en el procesamiento de predicción, ningún punto tridimensional fuera del intervalo predeterminado de distancia desde el punto tridimensional actual. Por ejemplo, cuando está presente el punto tridimensional r, y la distancia d (p, r) entre el punto tridimensional actual p y el punto tridimensional r es mayor que o igual al valor umbral THd, el dispositivo de codificación de datos tridimensionales puede determinar no usar el punto tridimensional r para predicción. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir la información que indica el valor umbral THd a, por ejemplo, un encabezado de un flujo de bits;
[0609] La FIG.51 es un diagrama que ilustra un ejemplo de puntos tridimensionales. En este ejemplo, la distancia d (p, q) entre el punto tridimensional actual p y el punto tridimensional q es menor que el valor umbral THd. Así, el dispositivo de codificación de datos tridimensionales determina que el punto tridimensional q es un punto tridimensional de referencia del punto tridimensional actual p, y determina usar el valor de información de atributos Aq del punto tridimensional q para generar el valor predicho Pp de información de atributos Ap del punto tridimensional actual p.
[0610] En contraste, la distancia d (p, r) entre el punto tridimensional actual p y el punto tridimensional r es mayor que o igual al valor umbral THd. Así, el dispositivo de codificación de datos tridimensionales determina que el punto tridimensional r no es ningún punto tridimensional de referencia del punto tridimensional actual p, y determina no usar el valor de información de atributos Ar del punto tridimensional r para generar el valor predicho Pp de información de atributos Ap del punto tridimensional actual p.
[0611] Además, cuando se codifica la información de atributos del punto tridimensional actual usando un valor predicho, el dispositivo de codificación de datos tridimensionales usa un punto tridimensional cuya información de atributos ya ha sido codificada y decodificada, como un punto tridimensional de referencia. Asimismo, cuando se decodifica la información de atributos de un punto tridimensional actual que va a decodificarse, el dispositivo de decodificación de datos tridimensionales usa un punto tridimensional cuya información de atributos ya ha sido decodificada, como un punto tridimensional de referencia. De esta manera, es posible generar el mismo valor predicho en el momento de la codificación y la decodificación. Así, un flujo de bits del punto tridimensional generado por la codificación puede decodificarse correctamente en el lado de decodificación.
[0612] Además, cuando se codifica información de atributos de cada uno de los puntos tridimensionales, es concebible clasificar el punto tridimensional en una de una pluralidad de capas usando información geométrica del punto tridimensional y luego codificar la información de atributos. Aquí, cada una de las capas clasificadas se denomina Nivel de Detalle (LoD). Se explica un método de generación de LoD con referencia a la FIG.52.
[0613] Primero, el dispositivo de codificación de datos tridimensionales selecciona el punto inicial a0 y asigna el punto inicial a0 a LoD0. A continuación, el dispositivo de codificación de datos tridimensionales extrae el punto a1 distante del punto a0 más que el valor umbral Thres_LoD[0] de LoD0 y asigna el punto a1 a LoD0. A continuación, el dispositivo de codificación de datos tridimensionales extrae el punto a2 distante del punto a1 más que el valor umbral Thres_LoD[0] de LoD0 y asigna el punto a2 a LoD0. De esta manera, el dispositivo de codificación de datos tridimensionales configura LoD0 de tal manera que la distancia entre los puntos en LoD0 es mayor que el valor umbral Thres_LoD[0].
[0615] A continuación, el dispositivo de codificación de datos tridimensionales selecciona el punto b0 que aún no ha sido asignado a ningún LoD y asigna el punto b0 a LoD1. A continuación, el dispositivo de codificación de datos tridimensionales extrae el punto b1 que está distante del punto b0 más que el valor umbral Thres_LoD[1] de LoD1 y que aún no ha sido asignado a ningún LoD, y asigna el punto b1 a LoD1. A continuación, el dispositivo de codificación de datos tridimensionales extrae el punto b2 que está distante del punto b1 más que el valor umbral Thres_LoD[1] de LoD1 y que aún no ha sido asignado a ningún LoD, y asigna el punto b2 a LoD1. De esta manera, el dispositivo de codificación de datos tridimensionales configura LoD1 de tal manera que la distancia entre los puntos en LoD1 es mayor que el valor umbral Thres_LoD[1].
[0617] A continuación, el dispositivo de codificación de datos tridimensionales selecciona el punto c0 que aún no ha sido asignado a ningún LoD y asigna el punto c0 a LoD2. A continuación, el dispositivo de codificación de datos tridimensionales extrae el punto c1 que está distante del punto c0 más que el valor umbral Thres_LoD[2] de LoD2 y que aún no ha sido asignado a ningún LoD, y asigna el punto c1 a LoD2. A continuación, el dispositivo de codificación de datos tridimensionales extrae el punto c2 que está distante del punto c1 más que el valor umbral Thres_LoD[2] de LoD2 y que aún no ha sido asignado a ningún LoD, y asigna el punto c2 a LoD2. De esta manera, el dispositivo de codificación de datos tridimensionales configura LoD2 de tal manera que la distancia entre los puntos en LoD2 es mayor que el valor umbral Thres_LoD[2]. Por ejemplo, como se ilustra en la FIG. 53, se establecen los valores umbral Thres_LoD[0], Thres_LoD[1] y Thres_LoD[2] de los LoD respectivos.
[0619] Además, el dispositivo de codificación de datos tridimensionales puede añadir la información que indica el valor umbral de cada LoD a, por ejemplo, un encabezado de un flujo de bits. Por ejemplo, en el caso del ejemplo ilustrado en la FIG.53, el dispositivo de codificación de datos tridimensionales puede añadir los valores umbral Thres_LoD[0], Thres_LoD[1] y Thres_LoD[2] de los LoD respectivos a un encabezado.
[0621] Alternativamente, el dispositivo de codificación de datos tridimensionales puede asignar todos los puntos tridimensionales que aún no han sido asignados a ningún LoD en el LoD de capa más baja. En este caso, el dispositivo de codificación de datos tridimensionales es capaz de reducir la cantidad de código del encabezado al no asignar el valor umbral del LoD de capa más baja al encabezado. Por ejemplo, en el caso del ejemplo ilustrado en la FIG. 53, el dispositivo de codificación de datos tridimensionales asigna los valores umbral Thres_LoD[0] y Thres_LoD[1] al encabezado, y no asigna Thres_LoD[2] al encabezado. En este caso, el dispositivo de codificación de datos tridimensionales puede estimar el valor 0 de Thres_LoD[2]. Además, el dispositivo de codificación de datos tridimensionales puede añadir el número de LoD a un encabezado. De esta manera, el dispositivo de codificación de datos tridimensionales es capaz de determinar el LoD de capa más baja usando el número de LoD.
[0623] Además, establecer valores umbral para las capas respectivas LoD de tal manera que se establezca un valor umbral mayor para una capa superior hace que una capa superior (capa más cercana a LoD0) tenga una nube de puntos dispersa (dispersión) en la cual los puntos tridimensionales están más distantes y hace que una capa inferior tenga una nube de puntos densa (dense) en la cual los puntos tridimensionales están más cercanos. Debe observarse que, en un ejemplo ilustrado en la FIG.53, LoD0 es la capa más superior.
[0625] Además, el método de selección de un punto tridimensional inicial en el momento de establecer cada LoD puede depender de un orden de codificación en el momento de la codificación de información geométrica. Por ejemplo, el dispositivo de codificación de datos tridimensionales configura LoD0 seleccionando el punto tridimensional codificado primero en el momento de la codificación de la información geométrica como el punto inicial a0 de LoD0, y seleccionando el punto a1 y el punto a2 desde el punto inicial a0 como el origen. El dispositivo de codificación de datos tridimensionales entonces puede seleccionar el punto tridimensional cuya información geométrica ha sido codificada en el momento más temprano entre puntos tridimensionales que no pertenecen a LoD0, como el punto inicial b0 de LoD1. En otras palabras, el dispositivo de codificación de datos tridimensionales puede seleccionar el punto tridimensional cuya información geométrica ha sido codificada en el momento más temprano entre puntos tridimensionales que no pertenecen a capas (LoD0 a LoDn-1) por encima de LoDn, como el punto inicial n0 de LoDn. De esta manera, el dispositivo de codificación de datos tridimensionales es capaz de configurar el mismo LoD que en la codificación usando, en la decodificación, el método de selección de punto inicial similar al usado en la codificación, lo que permite la decodificación apropiada de un flujo de bits. Más específicamente, el dispositivo de codificación de datos tridimensionales selecciona el punto tridimensional cuya información geométrica ha sido decodificada en el momento más temprano entre puntos tridimensionales que no pertenecen a capas por encima de LoDn, como el punto inicial n0 de LoDn.
[0626] En lo sucesivo, se da una descripción de un método de generación del valor predicho de la información de atributos de cada punto tridimensional usando información de LoD. Por ejemplo, cuando se codifican puntos tridimensionales comenzando con los puntos tridimensionales incluidos en LoD0, el dispositivo de codificación de datos tridimensionales genera puntos tridimensionales actuales que están incluidos en LoD1 usando información de atributos codificada y decodificada (en adelante también denominada simplemente “codificada”) incluida en LoD0 y LoD1. De esta manera, el dispositivo de codificación de datos tridimensionales genera un valor predicho de información de atributos de cada punto tridimensional incluido en LoDn usando información de atributos codificada incluida en LoDn’ (n’ ≤ n). En otras palabras, el dispositivo de codificación de datos tridimensionales no usa información de atributos de cada uno de los puntos tridimensionales incluidos en ninguna capa por debajo de LoDn para calcular un valor predicho de información de atributos de cada uno de los puntos tridimensionales incluidos en LoDn.
[0627] Por ejemplo, el dispositivo de codificación de datos tridimensionales calcula un promedio de información de atributos de N o menos puntos tridimensionales entre puntos tridimensionales codificados que rodean un punto tridimensional actual que va a codificarse, para generar un valor predicho de información de atributos del punto tridimensional actual. Además, el dispositivo de codificación de datos tridimensionales puede añadir el valor N a, por ejemplo, un encabezado de un flujo de bits. Debe observarse que el dispositivo de codificación de datos tridimensionales puede cambiar el valor N para cada punto tridimensional, y puede añadir el valor N para cada punto tridimensional. Esto permite la selección de N apropiado para cada punto tridimensional, lo que hace posible aumentar la precisión del valor predicho. En consecuencia, es posible reducir el residual de predicción. Alternativamente, el dispositivo de codificación de datos tridimensionales puede añadir el valor N a un encabezado de un flujo de bits, y puede fijar el valor que indica N en el flujo de bits. Esto elimina la necesidad de codificar o decodificar el valor N para cada punto tridimensional, lo que hace posible reducir la cantidad de procesamiento. Además, el dispositivo de codificación de datos tridimensionales puede codificar los valores de N separadamente para cada LoD. De esta manera, es posible aumentar la eficiencia de codificación seleccionando N apropiado para cada LoD.
[0628] Alternativamente, el dispositivo de codificación de datos tridimensionales puede calcular un valor predicho de información de atributos de un punto tridimensional sobre la base de valores promedio ponderados de información de atributos de N puntos tridimensionales vecinos codificados. Por ejemplo, el dispositivo de codificación de datos tridimensionales calcula pesos usando información de distancia entre un punto tridimensional actual y cada uno de N puntos tridimensionales vecinos.
[0629] Al codificar el valor N para cada LoD, por ejemplo, el dispositivo de codificación de datos tridimensionales establece un valor N mayor a un LoD de capa superior, y establece un valor N menor a un LoD de capa inferior. La distancia entre puntos tridimensionales que pertenecen a un LoD de capa superior es grande, existe una posibilidad de que sea posible aumentar la precisión de predicción estableciendo un valor N grande, seleccionando una pluralidad de puntos tridimensionales vecinos, y promediando los valores. Además, la distancia entre puntos tridimensionales que pertenecen a un LoD de capa inferior es pequeña, es posible realizar predicción eficiente mientras se reduce la cantidad de procesamiento de promediado estableciendo un valor N menor;
[0630] La FIG. 54 es un diagrama que ilustra un ejemplo de información de atributos que va a usarse para valores predichos. Como se describió anteriormente, el valor predicho del punto P incluido en LoDN se genera usando el punto vecino codificado P’ incluido en LoDN’ (N’ ≤ N). Aquí, el punto vecino P’ se selecciona sobre la base de la distancia desde el punto P. Por ejemplo, el valor predicho de información de atributos del punto b2 ilustrado en la FIG.54 se genera usando información de atributos de cada uno de los puntos a0, a1, b0 y b1.
[0631] Los puntos vecinos que van a seleccionarse varían dependiendo de los valores de N descritos anteriormente. Por ejemplo, en el caso de N = 5, a0, a1, a2, b0 y b1 se seleccionan como puntos vecinos. En el caso de N = 4, a0, a1, a2 y b1 se seleccionan sobre la base de información de distancia.
[0632] El valor predicho se calcula mediante promediado ponderado dependiente de la distancia. Por ejemplo, en el ejemplo ilustrado en la FIG.54, el valor predicho a2p del punto a2 se calcula mediante promediado ponderado de información de atributos de cada uno de los puntos a0 y a1, como se representa por (Ecuación A2) y (Ecuación A3). Debe observarse que A<i>es un valor de información de atributos de ai.
[0633] Mat.2
[0636]
[0639] Además, el valor predicho b2p del punto b2 se calcula mediante promediado ponderado de información de atributos de cada uno de los puntos a0, a1, a2, b0 y b1, como se representa por (Ecuación A4) y (Ecuación A6). Debe observarse que B<i>es un valor de información de atributos de bi.
[0642]
[0645] Además, el dispositivo de codificación de datos tridimensionales puede calcular un valor de diferencia (residual de predicción) generado a partir del valor de información de atributos de un punto tridimensional y puntos vecinos, y puede cuantizar el residual de predicción calculado. Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza cuantización dividiendo el residual de predicción por una escala de cuantización (también denominada paso de cuantización). En este caso, un error (error de cuantización) que puede generarse por cuantización se reduce a medida que la escala de cuantización es menor. En el otro caso en donde la escala de cuantización es mayor, el error de cuantización resultante es mayor.
[0646] Debe observarse que el dispositivo de codificación de datos tridimensionales puede cambiar la escala de cuantización que va a usarse para cada LoD. Por ejemplo, el dispositivo de codificación de datos tridimensionales reduce más la escala de cuantización para una capa superior, y aumenta más la escala de cuantización para una capa inferior. El valor de información de atributos de un punto tridimensional que pertenece a una capa superior puede usarse como un valor predicho de información de atributos de un punto tridimensional que pertenece a una capa inferior. Así, es posible aumentar la eficiencia de codificación reduciendo la escala de cuantización para la capa superior para reducir el error de cuantización que puede generarse en la capa superior y para aumentar la precisión de predicción del valor predicho. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir la escala de cuantización que va a usarse para cada LoD a, por ejemplo, un encabezado. De esta manera, el dispositivo de codificación de datos tridimensionales puede decodificar la escala de cuantización correctamente, decodificando de este modo apropiadamente el flujo de bits.
[0647] Además, el dispositivo de codificación de datos tridimensionales puede convertir un valor entero con signo (valor cuantizado con signo) que es un residual de predicción cuantizado en un valor entero sin signo (valor cuantizado sin signo). Esto elimina la necesidad de considerar la ocurrencia de un entero negativo al codificar entrópicamente el residual de predicción. Debe observarse que el dispositivo de codificación de datos tridimensionales no siempre necesita convertir un valor entero con signo en un valor entero sin signo, y, por ejemplo, que el dispositivo de codificación de datos tridimensionales puede codificar entrópicamente un bit de signo separadamente.
[0648] El residual de predicción se calcula restando un valor de predicción del valor original. Por ejemplo, como se representa por (Ecuación A7), el residual de predicción a2r del punto a2 se calcula restando el valor predicho a2p del punto a2 del valor A<2>de información de atributos del punto a2. Como se representa por (Ecuación A8), el residual de predicción b2r del punto b2 se calcula restando el valor predicho b2p del punto b2 del valor B<2>de información de atributos del punto b2.
[0651]
[0652] Además, el residual de predicción se cuantiza siendo dividido por un Paso de Cuantización (QS). Por ejemplo, el valor cuantizado a2q del punto a2 se calcula de acuerdo con (Ecuación A9). El valor cuantizado b2q del punto b2 se calcula de acuerdo con (Ecuación A10). Aquí, QS_LoD0 es un QS para LoD0, y QS_LoD1 es un QS para LoD1. En otras palabras, un QS puede cambiarse de acuerdo con un LoD.
[0655]
[0657] Además, el dispositivo de codificación de datos tridimensionales convierte valores enteros con signo que son valores cuantizados como se indica a continuación en valores enteros sin signo como se indica a continuación. Cuando el valor entero con signo a2q es menor que 0, el dispositivo de codificación de datos tridimensionales establece el valor entero sin signo a2u en -1 - (2 × a2q). Cuando el valor entero con signo a2q es 0 o más, el dispositivo de codificación de datos tridimensionales establece el valor entero sin signo a2u en 2 × a2q. Asimismo, cuando el valor entero con signo b2q es menor que 0, el dispositivo de codificación de datos tridimensionales establece el valor entero sin signo b2u en -1 - (2 × b2q). Cuando el valor entero con signo b2q es 0 o más, el dispositivo de codificación de datos tridimensionales establece el valor entero sin signo b2u en 2 × b2q.
[0658] Además, el dispositivo de codificación de datos tridimensionales puede codificar el residual de predicción cuantizado (valor entero sin signo) mediante codificación entrópica. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede binarizar el valor entero sin signo y luego aplicar codificación aritmética binaria al valor binario.
[0659] Debe observarse que, en este caso, el dispositivo de codificación de datos tridimensionales puede conmutar métodos de binarización de acuerdo con el valor de un residual de predicción. Por ejemplo, cuando el residual de predicción pu es menor que el valor umbral R_TH, el dispositivo de codificación de datos tridimensionales binariza el residual de predicción pu usando una cantidad de bits fija requerida para representar el valor umbral R_TH. Además, cuando el residual de predicción pu es mayor que o igual al valor umbral R_TH, el dispositivo de codificación de datos tridimensionales binariza los datos binarios del valor umbral R_TH y el valor de (pu -R_TH), usando codificación exponential-Golomb, o similar.
[0660] Por ejemplo, cuando el valor umbral R_TH es 63 y el residual de predicción pu es menor que 63, el dispositivo de codificación de datos tridimensionales binariza el residual de predicción pu usando 6 bits. Cuando el residual de predicción pu es mayor que o igual a 63, el dispositivo de codificación de datos tridimensionales realiza codificación aritmética binarizando los datos binarios (111111) del valor umbral R_TH y (pu - 63) usando codificación exponential-Golomb.
[0661] En un ejemplo más específico, cuando el residual de predicción pu es 32, el dispositivo de codificación de datos tridimensionales genera datos binarios de 6 bits (100000), y codifica aritméticamente la secuencia de bits. Además, cuando el residual de predicción pu es 66, el dispositivo de codificación de datos tridimensionales genera datos binarios (111111) del valor umbral R_TH y una secuencia de bits (00100) que representa el valor 3 (66 - 63) usando codificación exponential-Golomb, y codifica aritméticamente la secuencia de bits (111111 00100).
[0662] De esta manera, el dispositivo de codificación de datos tridimensionales puede realizar codificación mientras evita que una cantidad de bits binarios aumente abruptamente en el caso en donde un residual de predicción se vuelve grande conmutando métodos de binarización de acuerdo con la magnitud del residual de predicción. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir el valor umbral R_TH a, por ejemplo, un encabezado de un flujo de bits.
[0663] Por ejemplo, en el caso en donde la codificación se realiza a una alta tasa de bits, es decir, cuando una escala de cuantización es pequeña, se obtienen un error de cuantización pequeño y una precisión de predicción alta. Como resultado, un residual de predicción puede no ser grande. Así, en este caso, el dispositivo de codificación de datos tridimensionales establece un valor umbral R_TH grande. Esto reduce la posibilidad de que los datos binarios del valor umbral R_TH sean codificados, lo que aumenta la eficiencia de codificación. En el caso opuesto en donde la codificación se realiza a una baja tasa de bits, es decir, cuando una escala de cuantización es grande, se obtienen un error de cuantización grande y una precisión de predicción baja. Como resultado, un residual de predicción puede ser grande. Así, en este caso, el dispositivo de codificación de datos tridimensionales establece un valor umbral R_TH pequeño. De esta manera, es posible evitar un aumento abrupto en la longitud de bits de datos binarios.
[0664] Además, el dispositivo de codificación de datos tridimensionales puede conmutar el valor umbral R_TH para cada LoD, y puede añadir el valor umbral R_TH para cada LoD a, por ejemplo, un encabezado. En otras palabras, el dispositivo de codificación de datos tridimensionales puede conmutar métodos de binarización para
cada LoD. Por ejemplo, dado que las distancias entre puntos tridimensionales son grandes en una capa superior, una precisión de predicción es baja, lo que puede aumentar un residual de predicción. Así, el dispositivo de codificación de datos tridimensionales evita un aumento abrupto en la longitud de bits de datos binarios estableciendo un valor umbral R_TH pequeño a la capa superior. Además, dado que las distancias entre puntos tridimensionales son pequeñas en una capa inferior, una precisión de predicción es alta, lo que puede reducir un residual de predicción. Así, el dispositivo de codificación de datos tridimensionales aumenta la eficiencia de codificación estableciendo un valor umbral R_TH grande a la capa inferior;
[0665] La FIG. 55 es un diagrama que indica ejemplos de códigos exponential-Golomb. El diagrama indica las relaciones entre valores prebinarización (valores no binarios) y bits postbinarización (códigos). Debe observarse que 0 y 1 indicados en la FIG.55 pueden invertirse.
[0666] El dispositivo de codificación de datos tridimensionales aplica codificación aritmética a los datos binarios de residuales de predicción. De esta manera, puede aumentarse la eficiencia de codificación. Debe observarse que, en la aplicación de la codificación aritmética, existe una posibilidad de que las tendencias de probabilidad de ocurrencia de 0 y 1 en cada bit varíen, en datos binarios, entre un código de n bits que es una parte binarizada por n bits y un código restante que es una parte binarizada usando codificación exponential-Golomb. Así, el dispositivo de codificación de datos tridimensionales puede conmutar métodos de aplicación de codificación aritmética entre el código de n bits y el código restante.
[0667] Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza codificación aritmética sobre el código de n bits usando una o más tablas de codificación (tablas de probabilidad) diferentes para cada bit. En este momento, el dispositivo de codificación de datos tridimensionales puede cambiar el número de tablas de codificación que van a usarse para cada bit. Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza codificación aritmética usando una tabla de codificación para el primer bit b0 en un código de n bits. El dispositivo de codificación de datos tridimensionales usa dos tablas de codificación para el siguiente bit b1. El dispositivo de codificación de datos tridimensionales conmuta las tablas de codificación que van a usarse para la codificación aritmética del bit b1 de acuerdo con el valor (0 o 1) de b0. Asimismo, el dispositivo de codificación de datos tridimensionales usa cuatro tablas de codificación para el siguiente bit b2. El dispositivo de codificación de datos tridimensionales conmuta las tablas de codificación que van a usarse para la codificación aritmética del bit b2 de acuerdo con los valores (en un intervalo de 0 a 3) de b0 y b1.
[0668] De esta manera, el dispositivo de codificación de datos tridimensionales usa 2<n-1>tablas de codificación al codificar aritméticamente cada bit bn - 1 en un código de n bits. El dispositivo de codificación de datos tridimensionales conmuta las tablas de codificación que van a usarse de acuerdo con los valores (patrones de ocurrencia) de bits antes de bn - 1. De esta manera, el dispositivo de codificación de datos tridimensionales puede usar tablas de codificación apropiadas para cada bit, y por lo tanto puede aumentar la eficiencia de codificación.
[0669] Debe observarse que el dispositivo de codificación de datos tridimensionales puede reducir el número de tablas de codificación que van a usarse para cada bit. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede conmutar 2<m>tablas de codificación de acuerdo con los valores (patrones de ocurrencia) de m bits (m < n - 1) antes de bn - 1 cuando codifica aritméticamente cada bit bn - 1. De esta manera, es posible aumentar la eficiencia de codificación mientras se reduce el número de tablas de codificación que van a usarse para cada bit. Debe observarse que el dispositivo de codificación de datos tridimensionales puede actualizar las probabilidades de ocurrencia de 0 y 1 en cada tabla de codificación de acuerdo con los valores de datos binarios que ocurrieron realmente. Además, el dispositivo de codificación de datos tridimensionales puede fijar las probabilidades de ocurrencia de 0 y 1 en tablas de codificación para algún(os) bit(s). De esta manera, es posible reducir el número de actualizaciones de probabilidades de ocurrencia, y por lo tanto reducir la cantidad de procesamiento.
[0670] Por ejemplo, cuando un código de n bits es b0, b1, b2, …, bn - 1, la tabla de codificación para b0 es una tabla (CTb0). Las tablas de codificación para b1 son dos tablas (CTb10 y CTb11). Las tablas de codificación que van a usarse se conmutan de acuerdo con el valor (0 o 1) de b0. Las tablas de codificación para b2 son cuatro tablas (CTb20, CTb21, CTb22 y CTb23). Las tablas de codificación que van a usarse se conmutan de acuerdo con los valores (en el intervalo de 0 a 3) de b0 y b1. Las tablas de codificación para bn - 1 son 2<n-1>tablas (CTbn0, CTbn 1, …, CTbn (2<n-1>- 1)). Las tablas de codificación que van a usarse se conmutan de acuerdo con los valores (en un intervalo de 0 a 2<n-1>- 1) de b0, b1, …, bn - 2.
[0671] Debe observarse que el dispositivo de codificación de datos tridimensionales puede aplicar, a un código de n bits, codificación aritmética (m = 2<n>) mediante m-ario que establece el valor en el intervalo de 0 a 2<n-1>sin binarización. Cuando el dispositivo de codificación de datos tridimensionales codifica aritméticamente un código de n bits mediante un m-ario, el dispositivo de decodificación de datos tridimensionales puede reconstruir el código de n bits decodificando aritméticamente el m-ario;
[0672] La FIG.56 es un diagrama para ilustrar el procesamiento en el caso en donde los códigos restantes son códigos exponential-Golomb. Como se indica en la FIG.56, cada código restante que es una parte binarizada usando
codificación exponential-Golomb incluye un prefijo y un sufijo. Por ejemplo, el dispositivo de codificación de datos tridimensionales conmuta tablas de codificación entre el prefijo y el sufijo. En otras palabras, el dispositivo de codificación de datos tridimensionales codifica aritméticamente cada uno de los bits incluidos en el prefijo usando tablas de codificación para el prefijo, y codifica aritméticamente cada uno de los bits incluidos en el sufijo usando tablas de codificación para el sufijo.
[0673] Debe observarse que el dispositivo de codificación de datos tridimensionales puede actualizar las probabilidades de ocurrencia de 0 y 1 en cada tabla de codificación de acuerdo con los valores de datos binarios que ocurrieron realmente. Además, el dispositivo de codificación de datos tridimensionales puede fijar las probabilidades de ocurrencia de 0 y 1 en una de las tablas de codificación. De esta manera, es posible reducir el número de actualizaciones de probabilidades de ocurrencia, y por lo tanto reducir la cantidad de procesamiento. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede actualizar las probabilidades de ocurrencia para el prefijo, y puede fijar las probabilidades de ocurrencia para el sufijo. Además, el dispositivo de codificación de datos tridimensionales decodifica un residual de predicción cuantizado mediante cuantización inversa y reconstrucción, y usa un valor decodificado que es el residual de predicción decodificado para predicción de un punto tridimensional actual que va a codificarse y el/los siguiente(s) punto(s) tridimensional(es). Más específicamente, el dispositivo de codificación de datos tridimensionales calcula un valor cuantizado inverso multiplicando el residual de predicción cuantizado (valor cuantizado) con una escala de cuantización, y añade el valor cuantizado inverso y un valor de predicción para obtener el valor decodificado (valor reconstruido).
[0674] Por ejemplo, el valor cuantizado inverso a2iq del punto a2 se calcula usando el valor cuantizado a2q del punto a2 de acuerdo con (Ecuación A11). El valor cuantizado inverso b2iq del punto b2q se calcula usando el valor cuantizado b2q del punto b2 de acuerdo con (Ecuación A12). Aquí, QS_LoD0 es un QS para LoD0, y QS_LoD1 es un QS para LoD1. En otras palabras, un QS puede cambiarse de acuerdo con un LoD.
[0677]
[0680] Por ejemplo, como se representa por (Ecuación A13), el valor decodificado a2rec del punto a2 se calcula añadiendo el valor de cuantización inversa a2iq del punto a2 al valor predicho a2p del punto a2. Como se representa por (Ecuación A14), el valor decodificado b2rec del punto b2 se calcula añadiendo el valor cuantizado inverso b2iq del punto b2 al valor predicho b2p del punto b2.
[0683]
[0686] A continuación, se describe un ejemplo de sintaxis de un flujo de bits de acuerdo con la presente realización. La FIG.57 es un diagrama que indica el ejemplo de sintaxis de un encabezado de atributos (attribute_header) de acuerdo con la presente realización. El encabezado de atributos es información de encabezado de información de atributos. Como se indica en la FIG.57, el encabezado de atributos incluye la información de número de capas (NumLoD), la información de número de puntos tridimensionales (NumOfPoint[i]), un valor umbral de capa (Thres_LoD[i]), la información de número de puntos vecinos (NumNeighborPoint[i]), un valor umbral de predicción (THd[i]), una escala de cuantización (QS[i]) y un valor umbral de binarización (R_TH[i]). La información de número de capas (NumLoD) indica el número de LoD que van a usarse.
[0687] La información de número de puntos tridimensionales (NumOfPoint[i]) indica el número de puntos tridimensionales que pertenecen a la capa i. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir, a otro encabezado, la información de número de puntos tridimensionales que indica el número total de puntos tridimensionales. En este caso, el dispositivo de codificación de datos tridimensionales no necesita añadir, a un encabezado, NumOfPoint [NumLoD - 1] que indica el número de puntos tridimensionales que pertenecen a la capa más baja. En este caso, el dispositivo de decodificación de datos tridimensionales es capaz de calcular NumOfPoint [NumLoD - 1] de acuerdo con (Ecuación A15). En este caso, es posible reducir la cantidad de código del encabezado.
[0688] Mat.4
[0691]
[0694] El valor umbral de capa (Thres_LoD[i]) es un valor umbral que va a usarse para establecer la capa i. El dispositivo de codificación de datos tridimensionales y el dispositivo de decodificación de datos tridimensionales configuran LoDi de tal manera que la distancia entre puntos en LoDi se vuelve mayor que el valor umbral Thres_LoD[i]. El dispositivo de codificación de datos tridimensionales no necesita añadir el valor de Thres_LoD [NumLoD - 1] (capa más baja) a un encabezado. En este caso, el dispositivo de decodificación de datos tridimensionales puede estimar 0 como el valor de Thres_LoD [NumLoD - 1]. En este caso, es posible reducir la cantidad de código del encabezado.
[0695] La información de número de puntos vecinos (NumNeighborPoint[i]) indica el valor límite superior del número de puntos vecinos que van a usarse para generar un valor predicho de un punto tridimensional que pertenece a la capa i. El dispositivo de codificación de datos tridimensionales puede calcular un valor predicho usando el número de puntos vecinos M cuando el número de puntos vecinos M es menor que NumNeighborPoint[i] (M < NumNeighborPoint[i]). Además, cuando no hay necesidad de diferenciar los valores de NumNeighborPoint[i] para los LoD respectivos, el dispositivo de codificación de datos tridimensionales puede añadir una pieza de información de número de puntos vecinos (NumNeighborPoint) que va a usarse en todos los LoD a un encabezado.
[0696] El valor umbral de predicción (THd[i]) indica el valor límite superior de la distancia entre un punto tridimensional actual que va a codificarse o decodificarse en la capa i y cada uno de los puntos tridimensionales vecinos que van a usarse para predecir el punto tridimensional actual. El dispositivo de codificación de datos tridimensionales y el dispositivo de decodificación de datos tridimensionales no usan, para predicción, ningún punto tridimensional distante del punto tridimensional actual por encima de THd[i]. Debe observarse que, cuando no hay necesidad de diferenciar los valores de THd[i] para los LoD respectivos, el dispositivo de codificación de datos tridimensionales puede añadir un único valor umbral de predicción (THd) que va a usarse en todos los LoD a un encabezado.
[0697] La escala de cuantización (QS[i]) indica una escala de cuantización que va a usarse para cuantización y cuantización inversa en la capa i.
[0698] El valor umbral de binarización (R_TH[i]) es un valor umbral para conmutar métodos de binarización de residuales de predicción de puntos tridimensionales que pertenecen a la capa i. Por ejemplo, el dispositivo de codificación de datos tridimensionales binariza el residual de predicción pu usando una cantidad de bits fija cuando un residual de predicción es menor que el valor umbral R_TH, y binariza los datos binarios del valor umbral R_TH y el valor de (pu - R_TH) usando codificación exponential-Golomb cuando un residual de predicción es mayor que o igual al valor umbral R_TH. Debe observarse que, cuando no hay necesidad de conmutar los valores de R_TH[i] entre LoD, el dispositivo de codificación de datos tridimensionales puede añadir un único valor umbral de binarización (R_TH) que va a usarse en todos los LoD a un encabezado. Debe observarse que R_TH[i] puede ser el valor máximo que puede representarse por n bits. Por ejemplo, R_TH es 63 en el caso de 6 bits, y R_TH es 255 en el caso de 8 bits. Alternativamente, el dispositivo de codificación de datos tridimensionales puede codificar una cantidad de bits en lugar de codificar el valor máximo que puede representarse por n bits como un valor umbral de binarización. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede añadir el valor 6 en el caso de R_TH[i] = 63 a un encabezado, y puede añadir el valor 8 en el caso de R_TH[i] = 255 a un encabezado. Alternativamente, el dispositivo de codificación de datos tridimensionales puede definir el valor mínimo (cantidad de bits mínima) que representa R_TH[i], y añadir una cantidad de bits relativa desde el valor mínimo a un encabezado. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede añadir el valor 0 a un encabezado cuando R_TH[i] = 63 se satisface y la cantidad de bits mínima es 6, y puede añadir el valor 2 a un encabezado cuando R_TH[i] = 255 se satisface y la cantidad de bits mínima es 6.
[0699] Alternativamente, el dispositivo de codificación de datos tridimensionales puede codificar entrópicamente al menos uno de NumLoD, Thres_LoD[i], NumNeighborPoint[i], THd[i], QS[i] y R_TH[i], y añadir el codificado entrópicamente a un encabezado. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede binarizar cada valor y realizar codificación aritmética sobre el valor binario. Además, el dispositivo de codificación de datos tridimensionales puede codificar cada valor usando una longitud fija para reducir la cantidad de procesamiento.
[0700] Alternativamente, el dispositivo de codificación de datos tridimensionales no siempre necesita añadir al menos uno de NumLoD, Thres_LoD[i], NumNeighborPoint[i], THd[i], QS[i] y R_TH[i] a un encabezado. Por ejemplo, al menos uno de estos valores puede ser definido por un perfil o un nivel en un estándar, o similar. De esta manera, es posible reducir la cantidad de bits del encabezado;
[0701] La FIG.58 es un diagrama que indica el ejemplo de sintaxis de datos de atributos (attribute_data) de acuerdo con la presente realización. Los datos de atributos incluyen datos codificados de la información de atributos de una pluralidad de puntos tridimensionales. Como se indica en la FIG. 58, los datos de atributos incluyen un código de n bits y un código restante.
[0702] El código de n bits son datos codificados de un residual de predicción de un valor de información de atributos o una parte de los datos codificados. La longitud de bits del código de n bits depende del valor R_TH[i]. Por ejemplo, la longitud de bits del código de n bits es 6 bits cuando el valor indicado por R_TH[i] es 63, la longitud de bits del código de n bits es 8 bits cuando el valor indicado por R_TH[i] es 255.
[0703] El código restante son datos codificados, codificados usando codificación exponential-Golomb entre datos codificados del residual de predicción del valor de la información de atributos. El código restante se codifica o decodifica cuando el valor del código de n bits es igual a R_TH[i]. El dispositivo de decodificación de datos tridimensionales decodifica el residual de predicción añadiendo el valor del código de n bits y el valor del código restante. Debe observarse que el código restante no siempre necesita codificarse o decodificarse cuando el valor del código de n bits no es igual a R_TH[i].
[0704] A continuación, se da una descripción de un flujo de procesamiento en el dispositivo de codificación de datos tridimensionales. La FIG.59 es un diagrama de flujo de un proceso de codificación de datos tridimensionales realizado por el dispositivo de codificación de datos tridimensionales.
[0705] Primero, el dispositivo de codificación de datos tridimensionales codifica información geométrica (geometría) (S3001). Por ejemplo, la codificación de datos tridimensionales se realiza usando representación de octree. Cuando las posiciones de puntos tridimensionales cambian por cuantización, etc., después de la codificación de la información geométrica, el dispositivo de codificación de datos tridimensionales reasigna información de atributos de los puntos tridimensionales originales a los puntos tridimensionales posteriores al cambio (S3002). Por ejemplo, el dispositivo de codificación de datos tridimensionales interpola valores de información de atributos de acuerdo con las cantidades de cambio en posición para reasignar la información de atributos. Por ejemplo, el dispositivo de codificación de datos tridimensionales detecta N puntos tridimensionales precambio más cercanos a las posiciones tridimensionales posteriores al cambio, y realiza promediado ponderado de los valores de información de atributos de los N puntos tridimensionales. Por ejemplo, el dispositivo de codificación de datos tridimensionales determina pesos sobre la base de distancias desde las posiciones tridimensionales posteriores al cambio hasta las posiciones tridimensionales N respectivas en el promediado ponderado. El dispositivo de codificación de datos tridimensionales determina entonces que los valores obtenidos mediante el promediado ponderado son los valores de la información de atributos de los puntos tridimensionales posteriores al cambio. Cuando dos o más de los puntos tridimensionales cambian a la misma posición tridimensional mediante cuantización, etc., el dispositivo de codificación de datos tridimensionales puede asignar el valor promedio de la información de atributos de los dos o más puntos tridimensionales precambio como los valores de la información de atributos de los puntos tridimensionales posteriores al cambio.
[0706] A continuación, el dispositivo de codificación de datos tridimensionales codifica la información de atributos (atributo) reasignada (S3003). Por ejemplo, cuando se codifica una pluralidad de tipos de información de atributos, el dispositivo de codificación de datos tridimensionales puede codificar la pluralidad de tipos de información de atributos en orden. Por ejemplo, cuando se codifican colores y reflectancias como información de atributos, el dispositivo de codificación de datos tridimensionales puede generar un flujo de bits añadido con los resultados de codificación de color y los resultados de codificación de reflectancia después de los resultados de codificación de color. Debe observarse que el orden de la pluralidad de resultados de codificación de información de atributos que van a añadirse a un flujo de bits no está limitado al orden, y puede ser cualquier orden.
[0707] Alternativamente, el dispositivo de codificación de datos tridimensionales puede añadir, a un encabezado por ejemplo, información que indica la ubicación de inicio de datos codificados de cada información de atributos en un flujo de bits. De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar selectivamente información de atributos requerida para decodificarse, y por lo tanto es capaz de omitir el proceso de decodificación de la información de atributos no requerida para decodificarse. En consecuencia, es posible reducir la cantidad de procesamiento por el dispositivo de decodificación de datos tridimensionales. Alternativamente, el dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de tipos de información de atributos en paralelo, y puede integrar los resultados de codificación en un solo flujo de bits. De esta manera, el dispositivo de codificación de datos tridimensionales es capaz de codificar la pluralidad de tipos de información de atributos a alta velocidad;
[0708] La FIG.60 es un diagrama de flujo de un proceso de codificación de información de atributos (S3003). Primero, el dispositivo de codificación de datos tridimensionales establece los LoD (S3011). En otras palabras, el dispositivo de codificación de datos tridimensionales asigna cada uno de los puntos tridimensionales a cualquiera de la pluralidad de los LoD.
[0709] A continuación, el dispositivo de codificación de datos tridimensionales inicia un bucle para cada LoD (S3012). En otras palabras, el dispositivo de codificación de datos tridimensionales realiza iterativamente los procesos de las Etapas desde S3013 hasta S3021 para cada LoD.
[0710] A continuación, el dispositivo de codificación de datos tridimensionales inicia un bucle para cada punto tridimensional (S3013). En otras palabras, el dispositivo de codificación de datos tridimensionales realiza iterativamente los procesos de las Etapas desde S3014 hasta S3020 para cada punto tridimensional.
[0711] Primero, el dispositivo de codificación de datos tridimensionales busca una pluralidad de puntos vecinos que son puntos tridimensionales presentes en la vecindad de un punto tridimensional actual que va a procesarse y que van a usarse para calcular un valor predicho del punto tridimensional actual (S3014). A continuación, el dispositivo de codificación de datos tridimensionales calcula el promedio ponderado de los valores de información de atributos de la pluralidad de puntos vecinos, y establece el valor resultante en el valor predicho P (S3015). A continuación, el dispositivo de codificación de datos tridimensionales calcula un residual de predicción que es la diferencia entre la información de atributos del punto tridimensional actual y el valor predicho (S3016). A continuación, el dispositivo de codificación de datos tridimensionales cuantiza el residual de predicción para calcular un valor cuantizado (S3017). A continuación, el dispositivo de codificación de datos tridimensionales codifica aritméticamente el valor cuantizado (S3018).
[0712] A continuación, el dispositivo de codificación de datos tridimensionales cuantiza inversamente el valor cuantizado para calcular un valor cuantizado inverso (S3019). A continuación, el dispositivo de codificación de datos tridimensionales añade un valor de predicción al valor cuantizado inverso para generar un valor decodificado (S3020). A continuación, el dispositivo de codificación de datos tridimensionales termina el bucle para cada punto tridimensional (S3021). A continuación, el dispositivo de codificación de datos tridimensionales termina el bucle para cada LoD (S3022).
[0713] A continuación, se da una descripción de un proceso de decodificación de datos tridimensionales en el dispositivo de decodificación de datos tridimensionales que decodifica un flujo de bits generado por el dispositivo de codificación de datos tridimensionales.
[0714] El dispositivo de decodificación de datos tridimensionales genera datos binarios decodificados mediante decodificación aritmética de los datos binarios de la información de atributos en el flujo de bits generado por el dispositivo de codificación de datos tridimensionales, de acuerdo con el método similar al realizado por el dispositivo de codificación de datos tridimensionales. Debe observarse que cuando los métodos de aplicación de codificación aritmética se conmutan entre la parte (código de n bits) binarizada usando n bits y la parte (código restante) binarizada usando codificación exponential-Golomb en el dispositivo de codificación de datos tridimensionales, el dispositivo de decodificación de datos tridimensionales realiza decodificación de conformidad con la codificación aritmética, al aplicar decodificación aritmética.
[0715] Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza decodificación aritmética usando tablas de codificación (tablas de decodificación) diferentes para cada bit en la decodificación aritmética del código de n bits. En este momento, el dispositivo de decodificación de datos tridimensionales puede cambiar el número de tablas de codificación que van a usarse para cada bit. Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza decodificación aritmética usando una tabla de codificación para el primer bit b0 en el código de n bits. El dispositivo de decodificación de datos tridimensionales usa dos tablas de codificación para el siguiente bit b1. El dispositivo de decodificación de datos tridimensionales conmuta las tablas de codificación que van a usarse para la decodificación aritmética del bit b1 de acuerdo con el valor (0 o 1) de b0. Asimismo, el dispositivo de decodificación de datos tridimensionales usa cuatro tablas de codificación para el siguiente bit b2. El dispositivo de decodificación de datos tridimensionales conmuta las tablas de codificación que van a usarse para la decodificación aritmética del bit b2 de acuerdo con los valores (en el intervalo de 0 a 3) de b0 y b1.
[0716] De esta manera, el dispositivo de decodificación de datos tridimensionales usa 2<n-1>tablas de codificación al decodificar aritméticamente cada bit bn - 1 en el código de n bits. El dispositivo de decodificación de datos tridimensionales conmuta las tablas de codificación que van a usarse de acuerdo con los valores (patrones de ocurrencia) de bits antes de bn - 1. De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente un flujo de bits codificado con una eficiencia de codificación aumentada usando las tablas de codificación apropiadas para cada bit.
[0717] Debe observarse que el dispositivo de decodificación de datos tridimensionales puede reducir el número de tablas de codificación que van a usarse para cada bit. Por ejemplo, el dispositivo de decodificación de datos tridimensionales puede conmutar 2<m>tablas de codificación de acuerdo con los valores (patrones de ocurrencia)
de m bits (m < n - 1) antes de bn - 1 cuando decodifica aritméticamente cada bit bn - 1. De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits codificado con la eficiencia de codificación aumentada mientras reduce el número de tablas de codificación que van a usarse para cada bit. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede actualizar las probabilidades de ocurrencia de 0 y 1 en cada tabla de codificación de acuerdo con los valores de datos binarios que ocurrieron realmente. Además, el dispositivo de decodificación de datos tridimensionales puede fijar las probabilidades de ocurrencia de 0 y 1 en tablas de codificación para algún(os) bit(s). De esta manera, es posible reducir el número de actualizaciones de probabilidades de ocurrencia, y por lo tanto reducir la cantidad de procesamiento.
[0719] Por ejemplo, cuando un código de n bits es b0, b1, b2, …, bn - 1, la tabla de codificación para b0 es una (CTb0). Las tablas de codificación para b1 son dos tablas (CTb10 y CTb11). Las tablas de codificación que van a usarse se conmutan de acuerdo con el valor (0 o 1) de b0. Las tablas de codificación para b2 son cuatro tablas (CTb20, CTb21, CTb22 y CTb23). Las tablas de codificación que van a usarse de acuerdo con los valores (en el intervalo de 0 a 3) de b0 y b1. Las tablas de codificación para bn - 1 son 2<n-1>tablas (CTbn0, CTbn1, …, Tbn (2<n-1>- 1)). Las tablas de codificación que van a usarse se conmutan de acuerdo con los valores (en el intervalo de 0 a 2<n-1>- 1) de b0, b1, …, bn - 2;
[0721] La FIG.61 es un diagrama para ilustrar el procesamiento en el caso en donde los códigos restantes son códigos exponential-Golomb. Como se indica en la FIG. 61, la parte (parte restante) binarizada y codificada por el dispositivo de codificación de datos tridimensionales usando codificación exponential-Golomb incluye un prefijo y un sufijo. Por ejemplo, el dispositivo de decodificación de datos tridimensionales conmuta tablas de codificación entre el prefijo y el sufijo. En otras palabras, el dispositivo de decodificación de datos tridimensionales decodifica aritméticamente cada uno de los bits incluidos en el prefijo usando tablas de codificación para el prefijo, y decodifica aritméticamente cada uno de los bits incluidos en el sufijo usando tablas de codificación para el sufijo.
[0723] Debe observarse que el dispositivo de decodificación de datos tridimensionales puede actualizar las probabilidades de ocurrencia de 0 y 1 en cada tabla de codificación de acuerdo con los valores de datos binarios que ocurrieron en el momento de la decodificación. Además, el dispositivo de decodificación de datos tridimensionales puede fijar las probabilidades de ocurrencia de 0 y 1 en una de las tablas de codificación. De esta manera, es posible reducir el número de actualizaciones de probabilidades de ocurrencia, y por lo tanto reducir la cantidad de procesamiento. Por ejemplo, el dispositivo de decodificación de datos tridimensionales puede actualizar las probabilidades de ocurrencia para el prefijo, y puede fijar las probabilidades de ocurrencia para el sufijo.
[0725] Además, el dispositivo de decodificación de datos tridimensionales decodifica el residual de predicción cuantizado (valor entero sin signo) desbinarizando los datos binarios del residual de predicción decodificado aritméticamente de acuerdo con un método en conformidad con el método de codificación usado por el dispositivo de codificación de datos tridimensionales. El dispositivo de decodificación de datos tridimensionales primero decodifica aritméticamente los datos binarios de un código de n bits para calcular un valor del código de n bits. A continuación, el dispositivo de decodificación de datos tridimensionales compara el valor del código de n bits con el valor umbral R_TH.
[0727] En el caso en donde el valor del código de n bits y el valor umbral R_TH coinciden, el dispositivo de decodificación de datos tridimensionales determina que un bit codificado usando codificación exponential-Golomb está presente a continuación, y decodifica aritméticamente el código restante que son los datos binarios codificados usando codificación exponential-Golomb. El dispositivo de decodificación de datos tridimensionales calcula entonces, a partir del código restante decodificado, un valor del código restante usando una tabla de búsqueda inversa que indica la relación entre el código restante y el valor. La FIG. 62 es un diagrama que indica un ejemplo de una tabla de búsqueda inversa que indica relaciones entre códigos restantes y los valores de los mismos. A continuación, el dispositivo de decodificación de datos tridimensionales añade el valor obtenido del código restante a R_TH, obteniendo de este modo un residual de predicción cuantizado desbinarizado.
[0729] En el caso opuesto en donde el valor del código de n bits y el valor umbral R_TH no coinciden (el valor del código de n bits es menor que el valor R_TH), el dispositivo de decodificación de datos tridimensionales determina que el valor del código de n bits es el residual de predicción cuantizado desbinarizado tal como es. De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits generado mientras conmuta los métodos de binarización de acuerdo con los valores de los residuales de predicción por el dispositivo de codificación de datos tridimensionales.
[0731] Debe observarse que, cuando el valor umbral R_TH se añade a, por ejemplo, un encabezado de un flujo de bits, el dispositivo de decodificación de datos tridimensionales puede decodificar el valor umbral R_TH desde el encabezado, y puede conmutar métodos de decodificación usando el valor umbral R_TH decodificado. Cuando el valor umbral R_TH se añade a, por ejemplo, un encabezado para cada LoD, el dispositivo de
decodificación de datos tridimensionales conmuta métodos de decodificación usando el valor umbral R_TH decodificado para cada LoD.
[0732] Por ejemplo, cuando el valor umbral R_TH es 63 y el valor del código de n bits decodificado es 63, el dispositivo de decodificación de datos tridimensionales decodifica el código restante usando codificación exponential-Golomb, obteniendo de este modo el valor del código restante. Por ejemplo, en el ejemplo indicado en la FIG.
[0733] 62, el código restante es 00100, y se obtiene 3 como el valor del código restante. A continuación, el dispositivo de decodificación de datos tridimensionales añade 63 que es el valor umbral R_TH y 3 que es el valor del código restante, obteniendo de este modo 66 que es el valor del residual de predicción.
[0734] Además, cuando el valor del código de n bits decodificado es 32, el dispositivo de decodificación de datos tridimensionales establece 32 que es el valor del código de n bits al valor del residual de predicción.
[0735] Además, el dispositivo de decodificación de datos tridimensionales convierte el residual de predicción cuantizado decodificado, por ejemplo, de un valor entero sin signo a un valor entero con signo, mediante procesamiento inverso al procesamiento en el dispositivo de codificación de datos tridimensionales. De esta manera, al decodificar entrópicamente el residual de predicción, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits generado sin considerar la ocurrencia de un entero negativo. Debe observarse que el dispositivo de decodificación de datos tridimensionales no siempre necesita convertir un valor entero sin signo a un valor entero con signo, y que, por ejemplo, el dispositivo de decodificación de datos tridimensionales puede decodificar un bit de signo al decodificar un flujo de bits generado codificando entrópicamente por separado el bit de signo.
[0736] El dispositivo de decodificación de datos tridimensionales realiza decodificación cuantizando inversamente y reconstruyendo el residual de predicción cuantizado después de convertirse al valor entero con signo, para obtener un valor decodificado. El dispositivo de decodificación de datos tridimensionales usa el valor decodificado generado para predicción de un punto tridimensional actual que va a decodificarse y el/los siguiente(s) punto(s) tridimensional(es). Más específicamente, el dispositivo de decodificación de datos tridimensionales multiplica el residual de predicción cuantizado por una escala de cuantización decodificada para calcular un valor cuantizado inverso y añade el valor cuantizado inverso y el valor predicho para obtener el valor decodificado.
[0737] El valor entero sin signo decodificado (valor cuantizado sin signo) se convierte en un valor entero con signo mediante el procesamiento indicado a continuación. Cuando el bit menos significativo (LSB) del valor entero sin signo decodificado a2u es 1, el dispositivo de decodificación de datos tridimensionales establece el valor entero con signo a2q en -((a2u 1) >> 1). Cuando el LSB del valor entero sin signo a2u no es 1, el dispositivo de decodificación de datos tridimensionales establece el valor entero con signo a2q en ((a2u >> 1).
[0738] Asimismo, cuando un LSB del valor entero sin signo decodificado b2u es 1, el dispositivo de decodificación de datos tridimensionales establece el valor entero con signo b2q en -((b2u 1) >> 1). Cuando el LSB del valor entero sin signo decodificado n2u no es 1, el dispositivo de decodificación de datos tridimensionales establece el valor entero con signo b2q en ((b2u >> 1).
[0739] Los detalles del procesamiento de cuantización inversa y reconstrucción por el dispositivo de decodificación de datos tridimensionales son similares al procesamiento de cuantización inversa y reconstrucción en el dispositivo de codificación de datos tridimensionales.
[0740] A continuación, se da una descripción de un flujo de procesamiento en el dispositivo de decodificación de datos tridimensionales. La FIG.63 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales realizado por el dispositivo de decodificación de datos tridimensionales. Primero, el dispositivo de decodificación de datos tridimensionales decodifica información geométrica (geometría) desde un flujo de bits (S3031). Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza decodificación usando representación de octree.
[0741] A continuación, el dispositivo de decodificación de datos tridimensionales decodifica información de atributos (atributo) desde el flujo de bits (S3032). Por ejemplo, cuando se decodifican una pluralidad de tipos de información de atributos, el dispositivo de decodificación de datos tridimensionales puede decodificar la pluralidad de tipos de información de atributos en orden. Por ejemplo, cuando se decodifican colores y reflectancias como información de atributos, el dispositivo de decodificación de datos tridimensionales decodifica los resultados de codificación de color y los resultados de codificación de reflectancia en orden de asignación en el flujo de bits. Por ejemplo, cuando los resultados de codificación de reflectancia se añaden después de los resultados de codificación de color en un flujo de bits, el dispositivo de decodificación de datos tridimensionales decodifica los resultados de codificación de color, y luego decodifica los resultados de codificación de reflectancia. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede decodificar, en cualquier orden, los resultados de codificación de la información de atributos añadidos al flujo de bits.
[0742] Alternativamente, el dispositivo de codificación de datos tridimensionales puede añadir, a un encabezado por ejemplo, información que indica la ubicación de inicio de datos codificados de cada información de atributos en un flujo de bits. De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar selectivamente información de atributos requerida para decodificarse, y por lo tanto es capaz de omitir el proceso de decodificación de la información de atributos no requerida para decodificarse. En consecuencia, es posible reducir la cantidad de procesamiento por el dispositivo de decodificación de datos tridimensionales. Además, el dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de tipos de información de atributos en paralelo, y puede integrar los resultados de decodificación en una única nube de puntos tridimensional. De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar la pluralidad de tipos de información de atributos a alta velocidad; La FIG. 64 es un diagrama de flujo de un proceso de decodificación de información de atributos (S3032). Primero, el dispositivo de decodificación de datos tridimensionales establece LoD (S3041). En otras palabras, el dispositivo de decodificación de datos tridimensionales asigna cada uno de los puntos tridimensionales que tienen la información geométrica decodificada a cualquiera de la pluralidad de LoD. Por ejemplo, este método de asignación es el mismo que el método de asignación usado en el dispositivo de codificación de datos tridimensionales.
[0743] A continuación, el dispositivo de decodificación de datos tridimensionales inicia un bucle para cada LoD (S3042). En otras palabras, el dispositivo de decodificación de datos tridimensionales realiza iterativamente los procesos de las Etapas desde S3043 hasta S3049 para cada LoD.
[0744] A continuación, el dispositivo de decodificación de datos tridimensionales inicia un bucle para cada punto tridimensional (S3043). En otras palabras, el dispositivo de decodificación de datos tridimensionales realiza iterativamente los procesos de las Etapas desde S3044 hasta S3048 para cada punto tridimensional.
[0745] Primero, el dispositivo de decodificación de datos tridimensionales busca una pluralidad de puntos vecinos que son puntos tridimensionales presentes en la vecindad de un punto tridimensional actual que va a procesarse y que van a usarse para calcular un valor predicho del punto tridimensional actual que va a procesarse (S3044). A continuación, el dispositivo de decodificación de datos tridimensionales calcula el promedio ponderado de los valores de información de atributos de la pluralidad de puntos vecinos, y establece el valor resultante en el valor predicho P (S3045). Debe observarse que estos procesos son similares a los procesos en el dispositivo de codificación de datos tridimensionales.
[0746] A continuación, el dispositivo de decodificación de datos tridimensionales decodifica aritméticamente el valor cuantizado desde el flujo de bits (S3046). El dispositivo de decodificación de datos tridimensionales cuantiza inversamente el valor cuantizado decodificado para calcular un valor cuantizado inverso (S3047). A continuación, el dispositivo de decodificación de datos tridimensionales añade un valor predicho al valor cuantizado inverso para generar un valor decodificado (S3048). A continuación, el dispositivo de decodificación de datos tridimensionales termina el bucle para cada punto tridimensional (S3049). A continuación, el dispositivo de codificación de datos tridimensionales termina el bucle para cada LoD (S3050).
[0747] A continuación se describen configuraciones del dispositivo de codificación de datos tridimensionales y el dispositivo de decodificación de datos tridimensionales de acuerdo con la presente realización. La FIG.65 es un diagrama de bloques que ilustra una configuración del dispositivo de codificación de datos tridimensionales 3000 de acuerdo con la presente realización. El dispositivo de codificación de datos tridimensionales 3000 incluye el codificador de información geométrica 3001, el reasignador de información de atributos 3002 y el codificador de información de atributos 3003.
[0748] El codificador de información de atributos 3003 codifica información geométrica (geometría) de una pluralidad de puntos tridimensionales incluidos en una nube de puntos de entrada. El reasignador de información de atributos 3002 reasigna los valores de información de atributos de la pluralidad de puntos tridimensionales incluidos en la nube de puntos de entrada, usando los resultados de codificación y decodificación de la información geométrica. El codificador de información de atributos 3003 codifica la información de atributos (atributo) reasignada. Además, el dispositivo de codificación de datos tridimensionales 3000 genera un flujo de bits que incluye la información geométrica codificada y la información de atributos codificada;
[0749] La FIG.66 es un diagrama de bloques que ilustra una configuración del dispositivo de decodificación de datos tridimensionales 3010 de acuerdo con la presente realización. El dispositivo de decodificación de datos tridimensionales 3010 incluye el decodificador de información geométrica 3011 y el decodificador de información de atributos 3012.
[0750] El decodificador de información geométrica 3011 decodifica la información geométrica (geometría) de una pluralidad de puntos tridimensionales desde un flujo de bits. El decodificador de información de atributos 3012 decodifica la información de atributos (atributo) de la pluralidad de puntos tridimensionales desde el flujo de bits. Además, el dispositivo de decodificación de datos tridimensionales 3010 integra la información geométrica decodificada y la información de atributos decodificada para generar una nube de puntos de salida.
[0751] Como se describió anteriormente, el dispositivo de codificación de datos tridimensionales de acuerdo con la presente realización realiza el proceso ilustrado en la FIG. 67. El dispositivo de codificación de datos tridimensionales codifica un punto tridimensional que tiene información de atributos. Primero, el dispositivo de codificación de datos tridimensionales calcula un valor predicho de la información de atributos del punto tridimensional (S3061). A continuación, el dispositivo de codificación de datos tridimensionales calcula un residual de predicción que es la diferencia entre la información de atributos del punto tridimensional y el valor predicho (S3062). A continuación, el dispositivo de codificación de datos tridimensionales binariza el residual de predicción para generar datos binarios (S3063). A continuación, el dispositivo de codificación de datos tridimensionales codifica aritméticamente los datos binarios (S3064).
[0752] De esta manera, el dispositivo de codificación de datos tridimensionales es capaz de reducir la cantidad de código de los datos a codificar de la información de atributos calculando el residual de predicción de la información de atributos, y binarizando y codificando aritméticamente el residual de predicción.
[0753] Por ejemplo, en la codificación aritmética (S3064), el dispositivo de codificación de datos tridimensionales usa tablas de codificación diferentes para cada uno de los bits de datos binarios. Al hacer esto, el dispositivo de codificación de datos tridimensionales puede aumentar la eficiencia de codificación.
[0754] Por ejemplo, en la codificación aritmética (S3064), el número de tablas de codificación que van a usarse es mayor para un bit de orden inferior de los datos binarios.
[0755] Por ejemplo, en la codificación aritmética (S3064), el dispositivo de codificación de datos tridimensionales selecciona tablas de codificación que van a usarse para codificar aritméticamente un bit actual incluido en datos binarios, de acuerdo con el valor de un bit de orden superior con respecto al bit actual. Al hacer esto, dado que el dispositivo de codificación de datos tridimensionales puede seleccionar tablas de codificación que van a usarse de acuerdo con el valor del bit de orden superior, el dispositivo de codificación de datos tridimensionales puede aumentar la eficiencia de codificación.
[0756] Por ejemplo, en la binarización (S3063), el dispositivo de codificación de datos tridimensionales: binariza un residual de predicción usando una cantidad de bits fija para generar datos binarios cuando el residual de predicción es menor que un valor umbral (R_TH); y genera datos binarios que incluyen un primer código (código de n bits) y un segundo código (código restante) cuando el residual de predicción es mayor que o igual al valor umbral (R_TH). El primer código es de una cantidad de bits fija que indica el valor umbral (R_TH), y el segundo código (código restante) se obtiene binarizando, usando codificación exponential-Golomb, el valor obtenido restando el valor umbral (R_TH) del residual de predicción. En la codificación aritmética (S3064), el dispositivo de codificación de datos tridimensionales usa métodos de codificación aritmética diferentes entre el primer código y el segundo código.
[0757] Con esto, por ejemplo, dado que es posible codificar aritméticamente el primer código y el segundo código usando métodos de codificación aritmética respectivamente adecuados para el primer código y el segundo código, es posible aumentar la eficiencia de codificación.
[0758] Por ejemplo, el dispositivo de codificación de datos tridimensionales cuantiza el residual de predicción y, en la binarización (S3063), binariza el residual de predicción cuantizado. El valor umbral (R_TH) cambia de acuerdo con una escala de cuantización en la cuantización. Con esto, dado que el dispositivo de codificación de datos tridimensionales puede usar el valor umbral adecuadamente de acuerdo con la escala de cuantización, es posible aumentar la eficiencia de codificación.
[0759] Por ejemplo, el segundo código incluye un prefijo y un sufijo. En la codificación aritmética (S3064), el dispositivo de codificación de datos tridimensionales usa tablas de codificación diferentes entre el prefijo y el sufijo. De esta manera, el dispositivo de codificación de datos tridimensionales puede aumentar la eficiencia de codificación.
[0760] Por ejemplo, el dispositivo de codificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso anterior usando la memoria.
[0761] El dispositivo de decodificación de datos tridimensionales de acuerdo con la presente realización realiza el proceso ilustrado en la FIG.68. El dispositivo de decodificación de datos tridimensionales decodifica un punto tridimensional que tiene información de atributos. Primero, el dispositivo de decodificación de datos tridimensionales calcula un valor predicho de la información de atributos de un punto tridimensional (S3071). A continuación, el dispositivo de decodificación de datos tridimensionales decodifica aritméticamente datos codificados incluidos en un flujo de bits para generar datos binarios (S3072). A continuación, el dispositivo de decodificación de datos tridimensionales desbinariza los datos binarios para generar un residual de predicción (S3073). A continuación, el dispositivo de decodificación de datos tridimensionales calcula un valor decodificado de la información de atributos del punto tridimensional añadiendo el valor predicho y el residual de predicción (S3074).
[0762] De esta manera, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits de la información de atributos generado calculando el residual de predicción de la información de atributos y binarizando y decodificando aritméticamente el residual de predicción.
[0763] Por ejemplo, en la decodificación aritmética (S3072), el dispositivo de decodificación de datos tridimensionales usa tablas de codificación diferentes para cada uno de los bits de datos binarios. Con esto, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación aumentada.
[0764] Por ejemplo, en la decodificación aritmética (S3072), el número de tablas de codificación que van a usarse es mayor para un bit inferior de los datos binarios.
[0765] Por ejemplo, en la decodificación aritmética (S3072), el dispositivo de decodificación de datos tridimensionales selecciona tablas de codificación que van a usarse para decodificar aritméticamente un bit actual incluido en datos binarios, de acuerdo con el valor de un bit de orden superior con respecto al bit actual. Con esto, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación aumentada.
[0766] Por ejemplo, en la desbinarización (S3073), el dispositivo de decodificación de datos tridimensionales desbinariza el primer código (código de n bits) de una cantidad de bits fija incluido en los datos binarios para generar un primer valor. El dispositivo de decodificación de datos tridimensionales: determina que el primer valor es el residual de predicción cuando el primer valor es menor que el valor umbral (R_TH); y, cuando el primer valor es mayor que o igual al valor umbral (R_YH), genera un segundo valor desbinarizando el segundo código (código restante) que es un código exponential-Golomb incluido en los datos binarios y añade el primer valor y el segundo valor, generando de este modo un residual de predicción. En la decodificación aritmética (S3072), el dispositivo de decodificación de datos tridimensionales usa métodos de decodificación aritmética diferentes entre el primer código y el segundo código.
[0767] Con esto, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación aumentada.
[0768] Por ejemplo, el dispositivo de decodificación de datos tridimensionales cuantiza inversamente el residual de predicción y, además (S3074), añade el valor predicho y el residual de predicción cuantizado inversamente. El valor umbral (R_TH) cambia de acuerdo con una escala de cuantización en la cuantización inversa. Con esto, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación aumentada.
[0769] Por ejemplo, el segundo código incluye un prefijo y un sufijo. En la decodificación aritmética (S3072), el dispositivo de decodificación de datos tridimensionales usa tablas de codificación diferentes entre el prefijo y el sufijo. Con esto, el dispositivo de decodificación de datos tridimensionales es capaz de decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación aumentada.
[0770] Por ejemplo, el dispositivo de decodificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso descrito anteriormente usando la memoria.
[0771] Realización 9
[0772] Los valores predichos pueden generarse mediante un método diferente del de la Realización 8. A continuación, un punto tridimensional que va a codificarse se denomina un primer punto tridimensional, y uno o más puntos tridimensionales en la vecindad del primer punto tridimensional se denominan uno o más segundos puntos tridimensionales en algunos casos.
[0773] Por ejemplo, en la generación de un valor predicho de un elemento de información de atributos (información de atributos) de un punto tridimensional, un valor de atributo tal como es de un punto tridimensional más cercano entre puntos tridimensionales codificados y decodificados en la vecindad de un punto tridimensional que va a codificarse puede generarse como un valor predicho. En la generación del valor predicho, puede adjuntarse información de modo de predicción (PredMode) para cada punto tridimensional, y puede seleccionarse un valor predicho de una pluralidad de valores predichos para permitir la generación de un valor predicho. Específicamente, por ejemplo, es concebible que, para el número total M de modos de predicción, se asigne un valor promedio al modo de predicción 0, se asigne un valor de atributo del punto tridimensional A al modo de predicción 1, …, y se asigne un valor de atributo del punto tridimensional Z al modo de predicción M-1, y que el modo de predicción usado para la predicción se adjunte a un flujo de bits para cada punto tridimensional. Como tal, un primer valor de modo de predicción que indica un primer modo de predicción para calcular, como un valor predicho, un promedio de elementos de información de atributos de los puntos tridimensionales circundantes puede ser menor que un segundo valor de modo de predicción que indica un segundo modo de predicción para calcular, como un valor predicho, un elemento de información de atributos tal como es de un punto tridimensional circundante. Aquí, el “valor promedio” como el valor predicho calculado
en el modo de predicción 0 es un valor promedio de los valores de atributo de los puntos tridimensionales en la vecindad del punto tridimensional que va a codificarse;
[0774] La FIG. 69 es un diagrama que muestra un primer ejemplo de una tabla que representa valores predichos calculados en los modos de predicción de acuerdo con la presente realización. La FIG.70 es un diagrama que muestra ejemplos de elementos de información de atributos usados como los valores predichos de acuerdo con la presente realización. La FIG.71 es un diagrama que muestra un segundo ejemplo de una tabla que representa valores predichos calculados en los modos de predicción de acuerdo con la presente realización. El número M de modos de predicción puede adjuntarse a un flujo de bits. El número M de modos de predicción puede definirse por un perfil o un nivel de estándares en lugar de adjuntarse al flujo de bits. El número M de modos de predicción también puede calcularse a partir del número N de puntos tridimensionales usados para predicción. Por ejemplo, el número M de modos de predicción puede calcularse mediante M=N+1.
[0775] La tabla en la FIG. 69 es un ejemplo de un caso con el número N de puntos tridimensionales usados para predicción siendo 4 y el número M de modos de predicción siendo 5. Un valor predicho de un elemento de información de atributos del punto b2 puede generarse usando elementos de información de atributos de los puntos a0, a1, a2, b1. En la selección de un modo de predicción de una pluralidad de modos de predicción, puede seleccionarse un modo de predicción para generar, como un valor predicho, un valor de atributo de cada uno de los puntos a0, a1, a2, b1 de acuerdo con información de distancia desde el punto b2 hasta cada uno de los puntos a0, a1, a2, b1. El modo de predicción se adjunta para cada punto tridimensional que va a codificarse. El valor predicho se calcula de acuerdo con un valor correspondiente al modo de predicción adjuntado.
[0776] La tabla en la FIG. 71 es, como en la FIG. 69, un ejemplo de un caso con el número N de puntos tridimensionales usados para predicción siendo 4 y el número M de modos de predicción siendo 5. Un valor predicho de un elemento de información de atributos del punto a2 puede generarse usando elementos de información de atributos de los puntos a0, a1. En la selección de un modo de predicción de una pluralidad de modos de predicción, puede seleccionarse un modo de predicción para generar, como un valor predicho, un valor de atributo de cada uno de los puntos a0 y a1 de acuerdo con información de distancia desde el punto a2 hasta cada uno de los puntos a0, a1. El modo de predicción se adjunta para cada punto tridimensional que va a codificarse. El valor predicho se calcula de acuerdo con un valor correspondiente al modo de predicción adjuntado.
[0777] Cuando el número de puntos vecinos, es decir, el número N de puntos tridimensionales circundantes es menor que cuatro tal como en el punto a2 anterior, un modo de predicción al que no se asigna un valor predicho puede escribirse como “no disponible” en la tabla.
[0778] La asignación de valores de los modos de predicción puede determinarse de acuerdo con la distancia desde el punto tridimensional que va a codificarse. Por ejemplo, los valores de modo de predicción que indican una pluralidad de modos de predicción disminuyen con la disminución de la distancia desde el punto tridimensional que va a codificarse hasta los puntos tridimensionales circundantes que tienen los elementos de información de atributos usados como los valores predichos. El ejemplo en la FIG.69 muestra que los puntos b1, a2, a1, a0 se ubican secuencialmente más cerca del punto b2 como el punto tridimensional que va a codificarse. Por ejemplo, en el cálculo del valor predicho, el elemento de información de atributos del punto b1 se calcula como el valor predicho en un modo de predicción indicado por un valor de modo de predicción de “1” entre dos o más modos de predicción, y el elemento de información de atributos del punto a2 se calcula como el valor predicho en un modo de predicción indicado por un valor de modo de predicción de “2”. Como tal, el valor de modo de predicción que indica el modo de predicción para calcular, como el valor predicho, el elemento de información de atributos del punto b1 es menor que el valor de modo de predicción que indica el modo de predicción para calcular, como el valor predicho, el elemento de información de atributos del punto a2 más lejos del punto b2 que el punto b1.
[0779] Así, puede asignarse un valor de modo de predicción pequeño a un punto que es más probable que se prediga y seleccione debido a una corta distancia, reduciendo de este modo un número de bits para codificar el valor de modo de predicción. Además, puede asignarse preferentemente un valor de modo de predicción pequeño a un punto tridimensional que pertenece al mismo LoD que el punto tridimensional que va a codificarse;
[0780] La FIG. 72 es un diagrama que muestra un tercer ejemplo de una tabla que representa valores predichos calculados en los modos de predicción de acuerdo con la presente realización. Específicamente, el tercer ejemplo es un ejemplo de un caso en donde un elemento de información de atributos usado como un valor predicho es un valor de información de color (YUV) de un punto tridimensional circundante. Como tal, el elemento de información de atributos usado como el valor predicho puede ser información de color que indica un color del punto tridimensional.
[0781] Como se muestra en la FIG.72, un valor predicho calculado en un modo de predicción indicado por un valor de modo de predicción de “0” es un promedio de componentes Y, U y V que definen un espacio de color YUV. Específicamente, el valor predicho incluye un promedio ponderado Yave de valores de componente Y Yb1, Ya2,
Ya1, Ya0 correspondientes a los puntos b1, a2, a1, a0, respectivamente, un promedio ponderado Uave de valores de componente U Ub1, Ua2, Ua1, Ua0 correspondientes a los puntos b1, a2, a1, a0, respectivamente, y un promedio ponderado Vave de valores de componente V Vb1, Va2, Va1, Va0 correspondientes a los puntos b1, a2, a1, a0, respectivamente. Los valores predichos calculados en modos de predicción indicados por valores de modo de predicción de “1” a “4” incluyen información de color de los puntos tridimensionales circundantes b1, a2, a1, a0. La información de color se indica mediante combinaciones de los valores de componente Y, U y V.
[0782] En la FIG.72, la información de color se indica mediante un valor definido por el espacio de color YUV, pero no limitado al espacio de color YUV. La información de color puede indicarse mediante un valor definido por un espacio de color RGB o un valor definido por cualquier otro espacio de color.
[0783] Como tal, en el cálculo del valor predicho, dos o más promedios o dos o más elementos de información de atributos pueden calcularse como los valores predichos de los modos de predicción. Los dos o más promedios o los dos o más elementos de información de atributos pueden indicar dos o más valores de componente que definen cada uno un espacio de color.
[0784] Por ejemplo, cuando se selecciona un modo de predicción indicado por un valor de modo de predicción de “2” en la tabla en la FIG.72, un componente Y, un componente U y un componente V como valores de atributo del punto tridimensional que va a codificarse pueden codificarse como valores predichos Ya2, Ua2, Va2. En este caso, el valor de modo de predicción de “2” se adjunta al flujo de bits;
[0785] La FIG. 73 es un diagrama que muestra un cuarto ejemplo de una tabla que representa valores predichos calculados en los modos de predicción de acuerdo con la presente realización. Específicamente, el cuarto ejemplo es un ejemplo de un caso en donde un elemento de información de atributos usado como un valor predicho es un valor de información de reflectancia de un punto tridimensional circundante. La información de reflectancia es, por ejemplo, información que indica reflectancia R.
[0786] Como se muestra en la FIG.73, un valor predicho calculado en un modo de predicción indicado por un valor de modo de predicción de “0” es el promedio ponderado Rave de reflectancias Rb1, Ra2, Ra1, Ra0 correspondientes a los puntos b1, a2, a1, a0, respectivamente. Los valores predichos calculados en modos de predicción indicados por valores de modo de predicción de “1” a “4” son reflectancias Rb1, Ra2, Ra1, Ra0 de los puntos tridimensionales circundantes b1, a2, a1, a0, respectivamente.
[0787] Por ejemplo, cuando se selecciona un modo de predicción indicado por un valor de modo de predicción de “3” en la tabla en la FIG. 73, una reflectancia como un valor de atributo de un punto tridimensional que va a codificarse puede codificarse como valor predicho Ra1. En este caso, el valor de modo de predicción de “3” se adjunta al flujo de bits.
[0788] Como se muestra en las Figs.72 y 73, el elemento de información de atributos puede incluir un primer elemento de información de atributos y un segundo elemento de información de atributos diferente del primer elemento de información de atributos. El primer elemento de información de atributos es, por ejemplo, información de color. El segundo elemento de información de atributos es, por ejemplo, información de reflectancia. En el cálculo del valor predicho, puede calcularse un primer valor predicho usando el primer elemento de información de atributos, y puede calcularse un segundo valor predicho usando el segundo elemento de información de atributos.
[0789] Realización 10
[0790] A continuación, se describirá un método que usa una Transformada Jerárquica Adaptativa por Regiones (RAHT) como otro método de codificación de la información de atributos de un punto tridimensional. La FIG.74 es un diagrama para describir la codificación de la información de atributos usando una RAHT.
[0791] Primero, el dispositivo de codificación de datos tridimensionales genera códigos Morton sobre la base de la información geométrica de puntos tridimensionales, y ordena la información de atributos de los puntos tridimensionales en el orden de los códigos Morton. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede realizar ordenamiento en el orden ascendente de los códigos Morton. Debe observarse que el orden de ordenamiento no está limitado al orden de los códigos Morton, y pueden usarse otros órdenes. A continuación, el dispositivo de codificación de datos tridimensionales genera un componente de alta frecuencia y un componente de baja frecuencia de la capa L aplicando la conversión Haar a la información de atributos de dos puntos tridimensionales adyacentes en el orden de los códigos Morton. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede usar la conversión Haar de matrices 2 × 2. El componente de alta frecuencia generado se incluye en un coeficiente de codificación como el componente de alta frecuencia de la capa L, y el componente de baja frecuencia generado se usa como el valor de entrada para la capa superior L+1 de la capa L.
[0792] Después de generar el componente de alta frecuencia de la capa L usando la información de atributos de la capa L, el dispositivo de codificación de datos tridimensionales posteriormente realiza el procesamiento de la capa L+1. En el procesamiento de la capa L+1, el dispositivo de codificación de datos tridimensionales genera un componente de alta frecuencia y un componente de baja frecuencia de la capa L+1 aplicando la conversión Haar a dos componentes de baja frecuencia obtenidos mediante la conversión Haar de la información de atributos de la capa L. El componente de alta frecuencia generado se incluye en un coeficiente de codificación como el componente de alta frecuencia de la capa L+1, y el componente de baja frecuencia generado se usa como el valor de entrada para la capa superior L+2 de la capa L+1.
[0793] El dispositivo de codificación de datos tridimensionales repite dicho procesamiento de capa, y determina que se ha alcanzado la capa más alta Lmax en el momento en que un componente de baja frecuencia que se introduce en una capa se convierte en uno. El dispositivo de codificación de datos tridimensionales incluye el componente de baja frecuencia de la capa Lmax-1 que se introduce en la Capa Lmax en un coeficiente de codificación. Luego, el valor del componente de baja frecuencia o componente de alta frecuencia incluido en el coeficiente de codificación se cuantiza, y se codifica usando codificación entrópica o similar.
[0794] Debe observarse que, cuando solo existe un punto tridimensional como dos puntos tridimensionales adyacentes en el momento de aplicación de la conversión Haar, el dispositivo de codificación de datos tridimensionales puede usar el valor de la información de atributos del punto tridimensional existente como el valor de entrada para una capa superior.
[0795] De esta manera, el dispositivo de codificación de datos tridimensionales aplica jerárquicamente la conversión Haar a la información de atributos de entrada, genera un componente de alta frecuencia y un componente de baja frecuencia de la información de atributos, y realiza codificación aplicando cuantización descrita más adelante o similar. En consecuencia, puede mejorarse la eficiencia de codificación.
[0796] Cuando la información de atributos es N dimensional, el dispositivo de codificación de datos tridimensionales puede aplicar independientemente la conversión Haar para cada dimensión, y puede calcular cada coeficiente de codificación. Por ejemplo, cuando la información de atributos es información de color (RGB, YUV o similar), el dispositivo de codificación de datos tridimensionales aplica la conversión Haar para cada componente, y calcula cada coeficiente de codificación.
[0797] El dispositivo de codificación de datos tridimensionales puede aplicar la conversión Haar en el orden de las capas L, L+1, …, Lmax. Cuanto más cerca de la capa Lmax, se genera un coeficiente de codificación que incluye más componentes de baja frecuencia de la información de atributos de entrada.
[0798] w0 y w1 mostrados en la FIG. 74 son los pesos asignados a cada punto tridimensional. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede calcular el peso sobre la base de la información de distancia entre dos puntos tridimensionales adyacentes a los cuales se aplica la conversión Haar, o similar. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede mejorar la eficiencia de codificación de tal manera que cuanto más cercana sea la distancia, mayor sea el peso. Debe observarse que el dispositivo de codificación de datos tridimensionales puede calcular este peso con otra técnica, o no necesita usar el peso. En el ejemplo mostrado en la FIG.74, las piezas de la información de atributos de entrada son a0, a1, a2, a3, a4 y a5. Además, Ta1, Ta5, Tb1, Tb3, Tc1 y d0 se codifican entre los coeficientes de codificación después de la conversión Haar. Los otros coeficientes de codificación (b0, b2, c0 y similares) son medianas, y no se codifican. Específicamente, en el ejemplo mostrado en la FIG.74, el componente de alta frecuencia Ta1 y el componente de baja frecuencia b0 se generan realizando la conversión Haar sobre a0 y a1. Aquí, cuando los pesos w0 y w1 son iguales, el componente de baja frecuencia b0 es el valor promedio de a0 y a1, y el componente de alta frecuencia Ta1 es la diferencia entre a0 y a1.
[0799] Puesto que no hay información de atributos que vaya a emparejarse con a2, a2 se usa como b1 tal como es. De manera similar, puesto que no hay información de atributos que vaya a emparejarse con a3, a3 se usa como b2 tal como es. Además, el componente de alta frecuencia Ta5 y el componente de baja frecuencia b3 se generan realizando la conversión Haar sobre a4 y a5.
[0800] En la capa L+1, el componente de alta frecuencia Tb1 y el componente de baja frecuencia c0 se generan realizando la conversión Haar sobre b0 y b1. De manera similar, el componente de alta frecuencia Tb3 y el componente de baja frecuencia c1 se generan realizando la conversión Haar sobre b2 y b3.
[0801] En la capa Lmax-1, el componente de alta frecuencia Tc1 y el componente de baja frecuencia d0 se generan realizando la conversión Haar sobre c0 y c1.
[0802] El dispositivo de codificación de datos tridimensionales puede codificar los coeficientes de codificación a los que se ha aplicado la conversión Haar, después de cuantizar los coeficientes de codificación. Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza cuantización dividiendo el coeficiente de codificación por la escala de cuantización (también llamada el paso de cuantización (QS)). En este caso, cuanto
menor sea la escala de cuantización, menor será el error (error de cuantización) que puede ocurrir debido a la cuantización. A la inversa, cuanto mayor sea la escala de cuantización, mayor será el error de cuantización. Debe observarse que el dispositivo de codificación de datos tridimensionales puede cambiar el valor de la escala de cuantización para cada capa. La FIG.75 es un diagrama que muestra un ejemplo de establecimiento de la escala de cuantización para cada capa. Por ejemplo, el dispositivo de codificación de datos tridimensionales establece escalas de cuantización menores para las capas superiores, y escalas de cuantización mayores para las capas inferiores. Puesto que los coeficientes de codificación de los puntos tridimensionales que pertenecen a las capas superiores incluyen más componentes de baja frecuencia que las capas inferiores, existe una alta posibilidad de que los coeficientes de codificación sean componentes importantes en características visuales humanas y similares. Por lo tanto, suprimiendo el error de cuantización que puede ocurrir en las capas superiores haciendo pequeñas las escalas de cuantización para las capas superiores, se puede suprimir el deterioro visual, y puede mejorarse la eficiencia de codificación.
[0803] Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir la escala de cuantización para cada capa a un encabezado o similar. En consecuencia, el dispositivo de decodificación tridimensional puede decodificar correctamente la escala de cuantización, y puede decodificar apropiadamente un flujo de bits.
[0804] Además, el dispositivo de codificación de datos tridimensionales puede conmutar adaptativamente el valor de la escala de cuantización de acuerdo con la importancia de un punto tridimensional actual que va a codificarse. Por ejemplo, el dispositivo de codificación de datos tridimensionales usa una escala de cuantización pequeña para un punto tridimensional con alta importancia, y usa una escala de cuantización grande para un punto tridimensional con baja importancia. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede calcular la importancia a partir del peso en el momento de la conversión Haar, o similar. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede calcular la escala de cuantización usando la suma de w0 y w1. De esta manera, haciendo pequeña la escala de cuantización de un punto tridimensional con alta importancia, el error de cuantización se vuelve pequeño, y puede mejorarse la eficiencia de codificación. Además, el valor del QS puede hacerse menor para las capas superiores. En consecuencia, cuanto mayor sea la capa, mayor será el valor del QW, y puede mejorarse la eficiencia de predicción suprimiendo el error de cuantización del punto tridimensional.
[0805] Aquí, un coeficiente de codificación Talq después de la cuantización del coeficiente de codificación Ta1 de la información de atributos a1 se representa por Ta1/QS_L. Debe observarse que QS puede ser el mismo valor en todas las capas o una parte de las capas.
[0806] El QW (Peso de Cuantización) es el valor que representa la importancia de un punto tridimensional actual que va a codificarse. Por ejemplo, la suma anteriormente descrita de w0 y w1 puede usarse como el QW. En consecuencia, cuanto mayor sea la capa, mayor será el valor del QW, y puede mejorarse la eficiencia de predicción suprimiendo el error de cuantización del punto tridimensional.
[0807] Por ejemplo, el dispositivo de codificación de datos tridimensionales primero puede inicializar los valores de los QW de todos los puntos tridimensionales con 1, y puede actualizar el QW de cada punto tridimensional usando los valores de w0 y w1 en el momento de la conversión Haar. Alternativamente, el dispositivo de codificación de datos tridimensionales puede cambiar el valor inicial de acuerdo con las capas, sin inicializar los valores de los QW de todos los puntos tridimensionales con un valor de 1. Por ejemplo, las escalas de cuantización para las capas superiores se vuelven pequeñas estableciendo valores iniciales de QW mayores para las capas superiores. En consecuencia, puesto que el error de predicción en las capas superiores puede suprimirse, puede aumentarse la precisión de predicción de las capas inferiores, y puede mejorarse la eficiencia de codificación. Debe observarse que el dispositivo de codificación de datos tridimensionales no necesita necesariamente usar el QW.
[0808] Cuando se usa el QW, el valor cuantizado Talq de Ta1 se calcula mediante (Ecuación K1) y (Ecuación K2).
[0811]
[0814] Además, el dispositivo de codificación de datos tridimensionales escanea y codifica los coeficientes de codificación (valores enteros sin signo) después de la cuantización en un determinado orden. Por ejemplo, el dispositivo de codificación de datos tridimensionales codifica una pluralidad de puntos tridimensionales desde los puntos tridimensionales incluidos en las capas superiores hacia las capas inferiores en orden.
[0815] Por ejemplo, en el ejemplo mostrado en la FIG. 74, el dispositivo de codificación de datos tridimensionales codifica una pluralidad de puntos tridimensionales en el orden de Tc1q Tb1q, Tb3q, Talq y Ta5q desde d0q incluido en la capa superior Lmax. Aquí, existe una tendencia a que cuanto menor sea la capa L, más probable
sea que el coeficiente de codificación después de la cuantización se vuelva 0. Esto puede deberse a lo siguiente y similares.
[0816] Puesto que el coeficiente de codificación de la capa inferior L muestra un componente de frecuencia más alta que las capas superiores, existe una tendencia a que el coeficiente de codificación se vuelva 0 dependiendo de un punto tridimensional actual. Además, conmutando la escala de cuantización de acuerdo con la importancia anteriormente descrita o similar, cuanto menor sea la capa, mayores serán las escalas de cuantización, y más probable será que el coeficiente de codificación después de la cuantización se vuelva 0. De esta manera, cuanto menor sea la capa, más probable será que el coeficiente de codificación después de la cuantización se vuelva 0, y el valor 0 ocurra consecutivamente en la primera secuencia de códigos. La FIG.
[0817] 76 es un diagrama que muestra un ejemplo de la primera secuencia de códigos y la segunda secuencia de códigos.
[0818] El dispositivo de codificación de datos tridimensionales cuenta el número de veces que el valor 0 ocurre en la primera secuencia de códigos, y codifica el número de veces que el valor 0 ocurre consecutivamente, en lugar de los valores 0 consecutivos. Es decir, el dispositivo de codificación de datos tridimensionales genera una segunda secuencia de códigos reemplazando el coeficiente de codificación de los valores 0 consecutivos en la primera secuencia de códigos con el número de veces consecutivas (ZeroCnt) de 0. En consecuencia, cuando hay valores 0 consecutivos de los coeficientes de codificación después de la cuantización, puede mejorarse la eficiencia de codificación codificando el número de veces consecutivas de 0, en lugar de codificar muchos 0. Además, el dispositivo de codificación de datos tridimensionales puede codificar entrópicamente el valor de ZeroCnt. Por ejemplo, el dispositivo de codificación de datos tridimensionales binariza el valor de ZeroCnt con el código unario truncado del número total T de los puntos tridimensionales codificados, y codifica aritméticamente cada bit después de la binarización. La FIG.77 es un diagrama que muestra un ejemplo del código unario truncado en el caso en donde el número total de puntos tridimensionales codificados es T. En este momento, el dispositivo de codificación de datos tridimensionales puede mejorar la eficiencia de codificación usando una tabla de codificación diferente para cada bit. Por ejemplo, el dispositivo de codificación de datos tridimensionales usa la tabla de codificación 1 para el primer bit, usa la tabla de codificación 2 para el segundo bit, y la tabla de codificación 3 para los bits posteriores. De esta manera, el dispositivo de codificación de datos tridimensionales puede mejorar la eficiencia de codificación conmutando la tabla de codificación para cada bit.
[0819] Además, el dispositivo de codificación de datos tridimensionales puede codificar aritméticamente ZeroCnt después de binarizar ZeroCnt con un Exponential-Golomb. En consecuencia, cuando el valor de ZeroCnt se vuelve grande fácilmente, la eficiencia puede mejorarse más que la codificación aritmética binarizada con el código unario truncado. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir un indicador para conmutar entre usar el código unario truncado y usar el Exponential-Golomb a un encabezado. En consecuencia, el dispositivo de codificación de datos tridimensionales puede mejorar la eficiencia de codificación seleccionando el método de binarización óptimo. Además, el dispositivo de decodificación de datos tridimensionales puede decodificar correctamente un flujo de bits remitiéndose al indicador incluido en el encabezado para conmutar el método de binarización.
[0820] El dispositivo de decodificación tridimensional puede convertir el coeficiente de codificación decodificado después de la cuantización de un valor entero sin signo a un valor entero con signo con un método contrario al método realizado por el dispositivo de codificación de datos tridimensionales. En consecuencia, cuando el coeficiente de codificación se codifica entrópicamente, el dispositivo de decodificación tridimensional puede decodificar apropiadamente un flujo de bits generado sin considerar la ocurrencia de un entero negativo. Debe observarse que el dispositivo de decodificación tridimensional no necesita necesariamente convertir el coeficiente de codificación de un valor entero sin signo a un valor entero con signo. Por ejemplo, al decodificar un flujo de bits que incluye un bit codificado que ha sido codificado entrópicamente por separado, el dispositivo de decodificación tridimensional puede decodificar el bit de signo.
[0821] El dispositivo de decodificación tridimensional decodifica el coeficiente de codificación después de la cuantización convertido al valor entero con signo, mediante la cuantización inversa y la conversión Haar inversa. Además, el dispositivo de decodificación tridimensional utiliza el coeficiente de codificación después de la decodificación para la predicción después del punto tridimensional actual que va a decodificarse. Específicamente, el dispositivo de decodificación tridimensional calcula el valor cuantizado inverso multiplicando el coeficiente de codificación después de la cuantización por la escala de cuantización decodificada. A continuación, el dispositivo de decodificación tridimensional obtiene el valor decodificado aplicando la conversión Haar inversa descrita más adelante al valor cuantizado inverso.
[0822] Por ejemplo, el dispositivo de decodificación tridimensional convierte el valor entero sin signo decodificado a un valor entero con signo con el siguiente método. Cuando el LSB (bit menos significativo) del valor entero sin signo decodificado a2u es 1, el valor entero con signo Talq se establece en - ((a2u 1) >> 1). Cuando el LSB
del valor entero sin signo decodificado a2u no es 1 (cuando es 0), el valor entero con signo Talq se establece en (a2u >> 1).
[0823] Además, el valor cuantizado inverso de Ta1 se representa por Talq × QS_L. Aquí, Talq es el valor cuantizado de Ta1. Además, QS_L es el paso de cuantización para la capa L.
[0824] Además, el QS puede ser el mismo valor para todas las capas o una parte de las capas. Además, el dispositivo de codificación de datos tridimensionales puede añadir la información que indica el QS a un encabezado o similar. En consecuencia, el dispositivo de decodificación tridimensional puede realizar correctamente la cuantización inversa usando el mismo QS que el QS usado por el dispositivo de codificación de datos tridimensionales.
[0825] A continuación, se describirá la conversión Haar inversa. La FIG.78 es un diagrama para describir la conversión Haar inversa. El dispositivo de decodificación tridimensional decodifica el valor de atributo de un punto tridimensional aplicando la conversión Haar inversa al coeficiente de codificación después de la cuantización inversa.
[0826] Primero, el dispositivo de decodificación tridimensional genera los códigos Morton sobre la base de la información geométrica de puntos tridimensionales, y ordena los puntos tridimensionales en el orden de los códigos Morton. Por ejemplo, el dispositivo de decodificación tridimensional puede realizar el ordenamiento en orden ascendente de los códigos Morton. Debe observarse que el orden de ordenamiento no está limitado al orden de los códigos Morton, y puede usarse el otro orden.
[0827] A continuación, el dispositivo de decodificación tridimensional restablece la información de atributos de puntos tridimensionales que son adyacentes entre sí en el orden de los códigos Morton en la capa L, aplicando la conversión Haar inversa al coeficiente de codificación que incluye el componente de baja frecuencia de la capa L+1, y al coeficiente de codificación que incluye el componente de alta frecuencia de la capa L. Por ejemplo, el dispositivo de decodificación tridimensional puede usar la conversión Haar inversa de una matriz 2 × 2. La información de atributos de la capa L restablecida se usa como el valor de entrada para la capa inferior L-1. El dispositivo de decodificación tridimensional repite dicho procesamiento de capa, y termina el procesamiento cuando toda la información de atributos de la capa inferior se decodifica. Debe observarse que, cuando solo existe un punto tridimensional como dos puntos tridimensionales que son adyacentes entre sí en la capa L-1 en el momento de aplicación de la conversión Haar inversa, el dispositivo de decodificación tridimensional puede asignar el valor del componente de codificación de la capa L al valor de atributo del punto tridimensional existente. En consecuencia, el dispositivo de decodificación tridimensional puede decodificar correctamente un flujo de bits con eficiencia de codificación mejorada aplicando la conversión Haar a todos los valores de la información de atributos de entrada.
[0828] Cuando la información de atributos es N dimensional, el dispositivo de decodificación tridimensional puede aplicar independientemente la conversión Haar inversa para cada dimensión, y puede decodificar cada coeficiente de codificación. Por ejemplo, cuando la información de atributos es información de color (RGB, YUV o similar), el dispositivo de decodificación de datos tridimensionales aplica la conversión Haar inversa al coeficiente de codificación para cada componente, y decodifica cada valor de atributo.
[0829] El dispositivo de decodificación tridimensional puede aplicar la conversión Haar inversa en el orden de Capas Lmax, L+1, …, L. Además, w0 y w1 mostrados en la FIG. 78 son los pesos asignados a cada punto tridimensional. Por ejemplo, el dispositivo de decodificación de datos tridimensionales puede calcular el peso basándose en la información de distancia entre dos puntos tridimensionales adyacentes a los cuales se aplica la conversión Haar inversa, o similar. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede decodificar un flujo de bits con eficiencia de codificación mejorada de tal manera que cuanto más cercana sea la distancia, mayor sea el peso.
[0830] En el ejemplo mostrado en la FIG.78, los coeficientes de codificación después de la cuantización inversa son Ta1, Ta5, Tb1, Tb3, Tc1 y d0, y a0, a1, a2, a3, a4 y a5 se obtienen como los valores decodificados.
[0831] La FIG.79 es un diagrama que muestra un ejemplo de sintaxis de la información de atributos (attribute_data). La información de atributos (attribute_data) incluye el número de ceros consecutivos (ZeroCnt), el número de dimensiones de atributo (attribute_dimension) y el coeficiente de codificación (valor [j] [i]).
[0832] El número de ceros consecutivos (ZeroCnt) indica el número de veces que el valor 0 continúa en el coeficiente de codificación después de la cuantización. Debe observarse que el dispositivo de codificación de datos tridimensionales puede codificar aritméticamente ZeroCnt después de binarizar ZeroCnt.
[0833] Además, como se muestra en la FIG. 79, el dispositivo de codificación de datos tridimensionales puede determinar si la capa L (layerL) a la que pertenece el coeficiente de codificación es igual a o mayor que un valor umbral predefinido TH_layer, y puede conmutar la información añadida a un flujo de bits de acuerdo con el resultado de la determinación. Por ejemplo, cuando el resultado de la determinación es verdadero, el dispositivo
de codificación de datos tridimensionales añade todos los coeficientes de codificación de la información de atributos a un flujo de bits. Además, cuando el resultado de la determinación es falso, el dispositivo de codificación de datos tridimensionales puede añadir una parte de los coeficientes de codificación a un flujo de bits.
[0834] Específicamente, cuando el resultado de la determinación es verdadero, el dispositivo de codificación de datos tridimensionales añade el resultado codificado de la información tridimensional de la información de color RGB o YUV a un flujo de bits. Cuando el resultado de la determinación es falso, el dispositivo de codificación de datos tridimensionales puede añadir una parte de información tal como G o Y de la información de color a un flujo de bits, y no necesita añadir los otros componentes al flujo de bits. De esta manera, el dispositivo de codificación de datos tridimensionales puede mejorar la eficiencia de codificación al no añadir una parte de los coeficientes de codificación de la capa (la capa menor que TH_layer) que incluye los coeficientes de codificación que indican el componente de alta frecuencia con degradación menos notable visualmente a un flujo de bits.
[0835] El número de dimensiones de atributo (attribute_dimension) indica el número de dimensiones de la información de atributos. Por ejemplo, cuando la información de atributos es la información de color (RGB, YUV o similar) de un punto tridimensional, puesto que la información de color es tridimensional, el número de dimensiones de atributo se establece en un valor 3. Cuando la información de atributos es la reflectancia, puesto que la reflectancia es unidimensional, el número de dimensiones de atributo se establece en un valor 1. Debe observarse que el número de dimensiones de atributo puede añadirse al encabezado de la información de atributos de un flujo de bits o similar.
[0836] El coeficiente de codificación (valor [j] [i]) indica el coeficiente de codificación después de la cuantización de la información de atributos de la j-ésima dimensión del i-ésimo punto tridimensional. Por ejemplo, cuando la información de atributos es información de color, valor [99] [1] indica el coeficiente de codificación de la segunda dimensión (por ejemplo, el valor G) del 100ésimo punto tridimensional. Además, cuando la información de atributos es información de reflectancia, valor [119] [0] indica el coeficiente de codificación de la primera dimensión (por ejemplo, la reflectancia) del 120ésimo punto tridimensional.
[0837] Debe observarse que, cuando se satisfacen las siguientes condiciones, el dispositivo de codificación de datos tridimensionales puede restar el valor 1 de valor [j] [i], y puede codificar entrópicamente el valor obtenido. En este caso, el dispositivo de decodificación de datos tridimensionales restablece el coeficiente de codificación añadiendo el valor 1 a valor [j] [i] después de la decodificación entrópica.
[0838] Las condiciones descritas anteriormente son (1) cuando attribute_dimension = 1, o (2) cuando attribute_dimension es 1 o más, y cuando los valores de todas las dimensiones son iguales. Por ejemplo, cuando la información de atributos es la reflectancia, puesto que attribute_dimension = 1, el dispositivo de codificación de datos tridimensionales resta el valor 1 del coeficiente de codificación para calcular valor, y codifica el valor calculado. El dispositivo de decodificación tridimensional calcula el coeficiente de codificación añadiendo el valor 1 al valor después de la decodificación.
[0839] Más específicamente, por ejemplo, cuando el coeficiente de codificación de la reflectancia es 10, el dispositivo de codificación de datos tridimensionales codifica el valor 9 obtenido restando el valor 1 del valor 10 del coeficiente de codificación. El dispositivo de decodificación de datos tridimensionales añade el valor 1 al valor decodificado 9 para calcular el valor 10 del coeficiente de codificación.
[0840] Además, puesto que attribute_dimension = 3 cuando la información de atributos es el color, por ejemplo, cuando el coeficiente de codificación después de la cuantización de cada uno de los componentes R, G y B es el mismo, el dispositivo de codificación de datos tridimensionales resta el valor 1 de cada coeficiente de codificación, y codifica el valor obtenido. El dispositivo de decodificación de datos tridimensionales añade el valor 1 al valor después de la decodificación. Más específicamente, por ejemplo, cuando el coeficiente de codificación de R, G y B = (1, 1, 1), el dispositivo de codificación de datos tridimensionales codifica (0, 0, 0). El dispositivo de decodificación de datos tridimensionales añade 1 a cada componente de (0, 0, 0) para calcular (1, 1, 1). Además, cuando los coeficientes de codificación de R, G y B = (2, 1, 2), el dispositivo de codificación de datos tridimensionales codifica (2, 1, 2) tal como es. El dispositivo de decodificación de datos tridimensionales usa los (2, 1, 2) decodificados tal como son como los coeficientes de codificación.
[0841] De esta manera, al proporcionar ZeroCnt, puesto que el patrón en el que todas las dimensiones son 0 como valor no se genera, puede codificarse el valor obtenido restando 1 del valor indicado por valor. Por lo tanto, puede mejorarse la eficiencia de codificación.
[0842] Además, valor [0] [i] mostrado en FIG.79 indica el coeficiente de codificación después de la cuantización de la información de atributos de la primera dimensión del i-ésimo punto tridimensional. Como se muestra en la FIG.
[0843] 79, cuando la capa L (layerL) a la que pertenece el coeficiente de codificación es menor que el valor umbral TH_layer, la cantidad de código puede reducirse añadiendo la información de atributos de la primera dimensión
a un flujo de bits (no añadiendo la información de atributos de la segunda y siguientes dimensiones al flujo de bits).
[0844] El dispositivo de codificación de datos tridimensionales puede conmutar el método de cálculo del valor de ZeroCnt dependiendo del valor de attribute_dimension. Por ejemplo, cuando attribute_dimension = 3, el dispositivo de codificación de datos tridimensionales puede contar el número de veces que los valores de los coeficientes de codificación de todos los componentes (dimensiones) se vuelven 0. La FIG.80 es un diagrama que muestra un ejemplo del coeficiente de codificación y ZeroCnt en este caso. Por ejemplo, en el caso de la información de color mostrada en la FIG.80, el dispositivo de codificación de datos tridimensionales cuenta el número de coeficientes de codificación consecutivos que tienen 0 para todos los componentes R, G y B, y añade el número contado a un flujo de bits como ZeroCnt. En consecuencia, se vuelve innecesario codificar ZeroCnt para cada componente, y puede reducirse la sobrecarga. Por lo tanto, puede mejorarse la eficiencia de codificación. Debe observarse que el dispositivo de codificación de datos tridimensionales puede calcular ZeroCnt para cada dimensión incluso cuando attribute_dimension es dos o más, y puede añadir el ZeroCnt calculado a un flujo de bits.
[0845] La FIG. 81 es un diagrama de flujo del procesamiento de codificación de datos tridimensionales de acuerdo con la presente realización. Primero, el dispositivo de codificación de datos tridimensionales codifica información geométrica (geometría) (S6601). Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza codificación usando una representación de octree.
[0846] A continuación, el dispositivo de codificación de datos tridimensionales convierte la información de atributos (S6602). Por ejemplo, después de la codificación de la información geométrica, cuando la posición de un punto tridimensional cambia debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales reasigna la información de atributos del punto tridimensional original al punto tridimensional después del cambio. Debe observarse que el dispositivo de codificación de datos tridimensionales puede interpolar el valor de la información de atributos de acuerdo con la cantidad de cambio de la posición para realizar la reasignación. Por ejemplo, el dispositivo de codificación de datos tridimensionales detecta N puntos tridimensionales antes del cambio cerca de la posición tridimensional después del cambio, realiza el promediado ponderado del valor de la información de atributos de los N puntos tridimensionales sobre la base de la distancia desde la posición tridimensional después del cambio hasta cada uno de los N puntos tridimensionales, y establece el valor obtenido como el valor de la información de atributos del punto tridimensional después del cambio. Además, cuando dos o más puntos tridimensionales cambian a la misma posición tridimensional debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales puede asignar el valor promedio de la información de atributos en los dos o más puntos tridimensionales antes del cambio como el valor de la información de atributos después del cambio.
[0847] A continuación, el dispositivo de codificación de datos tridimensionales codifica la información de atributos (S6603). Por ejemplo, cuando se codifica una pluralidad de piezas de información de atributos, el dispositivo de codificación de datos tridimensionales puede codificar la pluralidad de piezas de información de atributos en orden. Por ejemplo, cuando se codifica el color y la reflectancia como la información de atributos, el dispositivo de codificación de datos tridimensionales genera un flujo de bits al que se añade el resultado de codificación de la reflectancia después del resultado de codificación del color. Debe observarse que una pluralidad de resultados de codificación de la información de atributos añadidos a un flujo de bits puede estar en cualquier orden.
[0848] Además, el dispositivo de codificación de datos tridimensionales puede añadir la información que indica la ubicación de inicio de los datos codificados de cada información de atributos en un flujo de bits a un encabezado o similar. En consecuencia, puesto que el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente la información de atributos que necesita decodificarse, puede omitirse el procesamiento de decodificación de la información de atributos que no necesita decodificarse. Por lo tanto, puede reducirse la cantidad de procesamiento para el dispositivo de decodificación de datos tridimensionales. Además, el dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos en paralelo, y puede integrar los resultados de codificación en un flujo de bits. En consecuencia, el dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos a alta velocidad.
[0849] La FIG. 82 es un diagrama de flujo del procesamiento de codificación de información de atributos (S6603). Primero, el dispositivo de codificación de datos tridimensionales genera un coeficiente de codificación a partir de información de atributos mediante la conversión Haar (S6611). A continuación, el dispositivo de codificación de datos tridimensionales aplica cuantización al coeficiente de codificación (S6612). A continuación, el dispositivo de codificación de datos tridimensionales genera información de atributos codificada (flujo de bits) codificando el coeficiente de codificación después de la cuantización (S6613).
[0850] Además, el dispositivo de codificación de datos tridimensionales aplica cuantización inversa al coeficiente de codificación después de la cuantización (S6614). A continuación, el dispositivo de decodificación tridimensional decodifica la información de atributos aplicando la conversión Haar inversa al coeficiente de codificación
después de la cuantización inversa (S6615). Por ejemplo, la información de atributos decodificada se remite en la siguiente codificación.
[0851] La FIG.83 es un diagrama de flujo del procesamiento de codificación de coeficiente de codificación (S6613). Primero, el dispositivo de codificación de datos tridimensionales convierte un coeficiente de codificación de un valor entero con signo a un valor entero sin signo (S6621). Por ejemplo, el dispositivo de codificación de datos tridimensionales convierte un valor entero con signo a un valor entero sin signo como sigue. Cuando el valor entero con signo Talq es menor que 0, el valor entero sin signo se establece en -1 - (2 × Ta1q). Cuando el valor entero con signo Talq es igual a o mayor que 0, el valor entero sin signo se establece en 2 × Talq. Debe observarse que, cuando el coeficiente de codificación no se vuelve un valor negativo, el dispositivo de codificación de datos tridimensionales puede codificar el coeficiente de codificación como el valor entero sin signo tal como es.
[0852] Cuando no todos los coeficientes de codificación han sido procesados (No en S6622), el dispositivo de codificación de datos tridimensionales determina si el valor del coeficiente de codificación que va a procesarse es cero (S6623). Cuando el valor del coeficiente de codificación que va a procesarse es cero (Sí en S6623), el dispositivo de codificación de datos tridimensionales incrementa ZeroCnt en 1 (S6624), y vuelve a la etapa S6622.
[0853] Cuando el valor del coeficiente de codificación que va a procesarse no es cero (No en S6623), el dispositivo de codificación de datos tridimensionales codifica ZeroCnt, y restablece ZeroCnt a cero (S6625). Además, el dispositivo de codificación de datos tridimensionales codifica aritméticamente el coeficiente de codificación que va a procesarse (S6626), y vuelve a la etapa S6622. Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza codificación aritmética binaria. Además, el dispositivo de codificación de datos tridimensionales puede restar el valor 1 del coeficiente de codificación, y puede codificar el valor obtenido. Además, el procesamiento de las etapas S6623 a S6626 se realiza repetidamente para cada coeficiente de codificación. Además, cuando todos los coeficientes de codificación han sido procesados (Sí en S6622), el dispositivo de codificación de datos tridimensionales termina el procesamiento.
[0854] La FIG.84 es un diagrama de flujo del procesamiento de decodificación de datos tridimensionales de acuerdo con la presente realización. Primero, el dispositivo de decodificación tridimensional decodifica información geométrica (geometría) desde un flujo de bits (S6631). Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza decodificación usando una representación de octree.
[0855] A continuación, el dispositivo de decodificación tridimensional decodifica la información de atributos desde el flujo de bits (S6632). Por ejemplo, cuando se decodifica una pluralidad de piezas de información de atributos, el dispositivo de decodificación tridimensional puede decodificar la pluralidad de piezas de información de atributos en orden. Por ejemplo, cuando se decodifica el color y la reflectancia como la información de atributos, el dispositivo de decodificación de datos tridimensionales decodifica el resultado de codificación del color y el resultado de codificación de la reflectancia de acuerdo con el orden en que se añaden al flujo de bits. Por ejemplo, cuando el resultado de codificación de la reflectancia se añade después del resultado de codificación del color en un flujo de bits, el dispositivo de decodificación de datos tridimensionales decodifica el resultado de codificación del color, y después decodifica el resultado de codificación de la reflectancia. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede decodificar los resultados de codificación de la información de atributos añadidos a un flujo de bits en cualquier orden.
[0856] Además, el dispositivo de decodificación tridimensional puede obtener la información que indica la ubicación de inicio de los datos codificados de cada información de atributos en un flujo de bits decodificando un encabezado o similar. En consecuencia, puesto que el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente la información de atributos que necesita decodificarse, puede omitirse el procesamiento de decodificación de la información de atributos que no necesita decodificarse. Por lo tanto, puede reducirse la cantidad de procesamiento del dispositivo de decodificación tridimensional. Además, el dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos en paralelo, y puede integrar los resultados de decodificación en una nube de puntos tridimensional. En consecuencia, el dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos a alta velocidad.
[0857] La FIG.85 es un diagrama de flujo del procesamiento de decodificación de información de atributos (S6632). Primero, el dispositivo de decodificación tridimensional decodifica un coeficiente de codificación desde un flujo de bits (S6641). A continuación, el dispositivo de decodificación tridimensional aplica la cuantización inversa al coeficiente de codificación (S6642). A continuación, el dispositivo de decodificación tridimensional decodifica la información de atributos aplicando la conversión Haar inversa al coeficiente de codificación después de la cuantización inversa (S6643).
[0858] La FIG.86 es un diagrama de flujo del procesamiento de decodificación de coeficiente de codificación (S6641). Primero, el dispositivo de decodificación tridimensional decodifica ZeroCnt desde un flujo de bits (S6651).
[0859] Cuando no todos los coeficientes de codificación han sido procesados (No en S6652), el dispositivo de decodificación tridimensional determina si ZeroCnt es mayor que 0 (S6653).
[0860] Cuando ZeroCnt es mayor que cero (Sí en S6653), el dispositivo de decodificación tridimensional establece el coeficiente de codificación que va a procesarse en 0 (S6654). A continuación, el dispositivo de decodificación tridimensional resta 1 de ZeroCnt (S6655), y vuelve a la etapa S6652.
[0861] Cuando ZeroCnt es cero (No en S6653), el dispositivo de decodificación tridimensional decodifica el coeficiente de codificación que va a procesarse (S6656). Por ejemplo, el dispositivo de decodificación tridimensional usa decodificación aritmética binaria. Además, el dispositivo de decodificación tridimensional puede añadir el valor 1 al coeficiente de codificación decodificado.
[0862] A continuación, el dispositivo de decodificación tridimensional decodifica ZeroCnt, establece el valor obtenido en ZeroCnt (S6657), y vuelve a la etapa S6652.
[0863] Además, el procesamiento de las etapas S6653 a S6657 se realiza repetidamente para cada coeficiente de codificación. Además, cuando todos los coeficientes de codificación han sido procesados (Sí en S6652), el dispositivo de codificación de datos tridimensionales convierte una pluralidad de coeficientes de codificación decodificados de valores enteros sin signo a valores enteros con signo (S6658). Por ejemplo, el dispositivo de decodificación de datos tridimensionales puede convertir los coeficientes de codificación decodificados de valores enteros sin signo a valores enteros con signo como sigue. Cuando el LSB (bit menos significativo) del valor entero sin signo decodificado Talu es 1, el valor entero con signo Talq se establece en - (Ta1u 1) >>1). Cuando el LSB del valor entero sin signo decodificado Talu no es 1 (cuando es 0), el valor entero con signo Talq se establece en (Talu >> 1). Debe observarse que, cuando el coeficiente de codificación no se vuelve un valor negativo, el dispositivo de decodificación de datos tridimensionales puede usar el coeficiente de codificación decodificado tal como es como el valor entero con signo.
[0864] La FIG.87 es un diagrama de bloques del codificador de información de atributos 6600 incluido en el dispositivo de codificación de datos tridimensionales. El codificador de información de atributos 6600 incluye el ordenador 6601, el transformador Haar 6602, el cuantizador 6603, el cuantizador inverso 6604, el convertidor Haar inverso 6605, la memoria 6606 y el codificador aritmético 6607.
[0865] El ordenador 6601 genera los códigos Morton usando la información geométrica de puntos tridimensionales, y ordena la pluralidad de puntos tridimensionales en el orden de los códigos Morton. El transformador Haar 6602 genera el coeficiente de codificación aplicando la conversión Haar a la información de atributos. El cuantizador 6603 cuantiza el coeficiente de codificación de la información de atributos.
[0866] El cuantizador inverso 6604 cuantiza inversamente el coeficiente de codificación después de la cuantización. El convertidor Haar inverso 6605 aplica la conversión Haar inversa al coeficiente de codificación. La memoria 6606 almacena los valores de piezas de información de atributos de una pluralidad de puntos tridimensionales decodificados. Por ejemplo, la información de atributos de los puntos tridimensionales decodificados almacenada en la memoria 6606 puede utilizarse para predicción y similares de un punto tridimensional no codificado.
[0867] El codificador aritmético 6607 calcula ZeroCnt a partir del coeficiente de codificación después de la cuantización, y codifica aritméticamente ZeroCnt. Además, el codificador aritmético 6607 codifica aritméticamente el coeficiente de codificación distinto de cero después de la cuantización. El codificador aritmético 6607 puede binarizar el coeficiente de codificación antes de la codificación aritmética. Además, el codificador aritmético 6607 puede generar y codificar diversos tipos de información de encabezado.
[0868] La FIG. 88 es un diagrama de bloques del decodificador de información de atributos 6610 incluido en el dispositivo de decodificación tridimensional. El decodificador de información de atributos 6610 incluye el decodificador aritmético 6611, el cuantizador inverso 6612, el convertidor Haar inverso 6613 y la memoria 6614. El decodificador aritmético 6611 decodifica aritméticamente ZeroCnt y el coeficiente de codificación incluidos en un flujo de bits. Debe observarse que el decodificador aritmético 6611 puede decodificar diversos tipos de información de encabezado.
[0869] El cuantizador inverso 6612 cuantiza inversamente el coeficiente de codificación decodificado aritméticamente. El convertidor Haar inverso 6613 aplica la conversión Haar inversa al coeficiente de codificación después de la cuantización inversa. La memoria 6614 almacena los valores de piezas de información de atributos de una pluralidad de puntos tridimensionales decodificados. Por ejemplo, la información de atributos de los puntos tridimensionales decodificados almacenada en la memoria 6614 puede utilizarse para predicción de un punto tridimensional no decodificado.
[0870] Debe observarse que, en la realización descrita anteriormente, aunque se ha mostrado el ejemplo en el que los puntos tridimensionales se codifican en el orden de las capas inferiores a las capas superiores como el orden de codificación, no está necesariamente limitado a esto. Por ejemplo, puede usarse un método que
escanee los coeficientes de codificación después de la conversión Haar en el orden de las capas superiores a las capas inferiores. Debe observarse que, también en este caso, el dispositivo de codificación de datos tridimensionales puede codificar el número de veces consecutivas del valor 0 como ZeroCnt.
[0871] Además, el dispositivo de codificación de datos tridimensionales puede conmutar si usar o no el método de codificación que usa ZeroCnt descrito en la presente realización por WLD, SPC o volumen. En este caso, el dispositivo de codificación de datos tridimensionales puede añadir la información que indica si el método de codificación que usa ZeroCnt se ha aplicado o no a la información de encabezado. En consecuencia, el dispositivo de decodificación tridimensional puede realizar decodificación apropiadamente. Como un ejemplo del método de conmutación, por ejemplo, el dispositivo de codificación de datos tridimensionales cuenta el número de veces de ocurrencia del coeficiente de codificación que tiene un valor de 0 con respecto a un volumen. Cuando el valor de conteo excede un valor umbral predefinido, el dispositivo de codificación de datos tridimensionales aplica el método que usa ZeroCnt al siguiente volumen, y cuando el valor de conteo es igual a o menor que el valor umbral, el dispositivo de codificación de datos tridimensionales no aplica el método que usa ZeroCnt al siguiente volumen. En consecuencia, puesto que el dispositivo de codificación de datos tridimensionales puede conmutar apropiadamente si aplicar o no el método de codificación que usa ZeroCnt de acuerdo con la característica de un punto tridimensional actual que va a codificarse, puede mejorarse la eficiencia de codificación.
[0872] Realización 11
[0873] A continuación, se describirá un parámetro de cuantización.
[0874] Para dividir datos de nube de puntos basándose en características y posiciones relativas a los datos de nube de puntos, se usan una tajada y un mosaico. Aquí, puede requerirse una calidad diferente para cada una de las piezas de datos de nube de puntos divisionales, debido a restricciones de hardware o requisitos de procesamiento en tiempo real, por ejemplo. Por ejemplo, al codificar datos de nube de puntos dividiendo los datos de nube de puntos en tajadas sobre una base de objeto, los datos de tajada que incluyen una planta son menos importantes, de modo que la resolución (calidad) de los datos de tajada puede disminuirse mediante cuantización. Por otro lado, la resolución (calidad) de datos de tajada importantes puede aumentarse estableciendo el valor de cuantización en un valor menor. Se usa un parámetro de cuantización para permitir dicho control del valor de cuantización.
[0875] Aquí, los datos que van a cuantizarse, una escala usada para la cuantización, y datos cuantizados, que son el resultado de cálculo por la cuantización, se expresan mediante las Ecuaciones G1 y G2 a continuación.
[0876] Datos cuantizados = datos/escala (Ecuación G1)
[0877] Datos = datos cuantizados*escala (Ecuación G2) La FIG.89 es un diagrama para describir un proceso realizado por el cuantizador 5323 que cuantiza datos y el cuantizador inverso 5333 que cuantiza inversamente datos cuantizados.
[0878] El cuantizador 5323 cuantiza datos usando una escala. Es decir, el cuantizador 5323 calcula datos cuantizados, que son datos cuantizados, realizando un proceso de acuerdo con la Ecuación G1.
[0879] El cuantizador inverso 5333 cuantiza inversamente datos cuantizados usando la escala. Es decir, el cuantizador inverso calcula datos cuantizados, cuantizados inversamente realizando un proceso de acuerdo con la Ecuación G2.
[0880] La escala y el valor de cuantización (valor de parámetro de cuantización (QP)) se expresan mediante la Ecuación G3 a continuación.
[0881] Valor de cuantización (Valor QP) = log(escala) (Ecuación G3) Valor de cuantización (valor QP) = valor por defecto (valor de referencia) delta de cuantización (información de diferencia) (Ecuación G4)
[0882] Estos parámetros se denominan genéricamente parámetro de cuantización.
[0883] Por ejemplo, como se ilustra en la FIG.90, un valor de cuantización es un valor con respecto a un valor por defecto, y se calcula añadiendo un delta de cuantización al valor por defecto. Si el valor de cuantización es menor que el valor por defecto, el delta de cuantización es un valor negativo. Si el valor de cuantización es mayor que el valor por defecto, el delta de cuantización es un valor positivo. Si el valor de cuantización es igual al valor por defecto, el delta de cuantización es 0. Cuando el delta de cuantización es 0, el delta de cuantización puede omitirse.
[0884] Se describirá un proceso de codificación. La FIG.91 es un diagrama de bloques que ilustra una configuración del primer codificador 5300 incluido en el dispositivo de codificación de datos tridimensionales de acuerdo con
la presente realización. La FIG.92 es un diagrama de bloques que ilustra una configuración del divisor 5301 de acuerdo con la presente realización. La FIG.93 es un diagrama de bloques que ilustra una configuración del codificador de información geométrica 5302 y del codificador de información de atributos 5303 de acuerdo con la presente realización.
[0885] El primer codificador 5300 genera datos codificados (flujo codificado) codificando datos de nube de puntos en un primer método de codificación (PCC basado en geometría (GPCC)). El primer codificador 5300 incluye el divisor 5301, una pluralidad de codificadores de información geométrica 5302, una pluralidad de codificadores de información de atributos 5303, el codificador de información adicional 5304 y el multiplexor 5305.
[0886] El divisor 5301 genera una pluralidad de piezas de datos divisionales dividiendo datos de nube de puntos. Específicamente, el divisor 5301 genera una pluralidad de piezas de datos divisionales dividiendo un espacio de datos de nube de puntos en una pluralidad de subespacios. Aquí, un subespacio es una combinación de mosaicos o tajadas, o una combinación de mosaicos y tajadas. Más específicamente, los datos de nube de puntos incluyen información geométrica, información de atributos e información adicional. El divisor 5301 divide la información geométrica en una pluralidad de piezas de información geométrica divisional, y divide la información de atributos en una pluralidad de piezas de información de atributos divisional. El divisor 5301 también genera información adicional relativa a la división.
[0887] Como se ilustra en la FIG.92, el divisor 5301 incluye el divisor de mosaicos 5311 y el divisor de tajadas 5312. Por ejemplo, el divisor de mosaicos 5311 divide una nube de puntos en mosaicos. El divisor de mosaicos 5311 puede determinar un valor de cuantización usado para cada mosaico divisional como información adicional de mosaico.
[0888] El divisor de tajadas 5312 divide adicionalmente un mosaico obtenido por el divisor de mosaicos 5311 en tajadas. El divisor de tajadas 5312 puede determinar un valor de cuantización usado para cada tajada divisional como información adicional de tajada.
[0889] La pluralidad de codificadores de información geométrica 5302 generan una pluralidad de piezas de información geométrica codificada codificando una pluralidad de piezas de información geométrica divisional. Por ejemplo, la pluralidad de codificadores de información geométrica 5302 procesan una pluralidad de piezas de información geométrica divisional en paralelo.
[0890] Como se ilustra en la FIG.93, el codificador de información geométrica 5302 incluye el calculador de valor de cuantización 5321 y el codificador entrópico 5322. El calculador de valor de cuantización 5321 genera un valor de cuantización (parámetro de cuantización) de información geométrica divisional que va a codificarse. El codificador entrópico 5322 calcula información geométrica cuantizada cuantizando la información geométrica divisional usando el valor de cuantización (parámetro de cuantización) generado por el calculador de valor de cuantización 5321.
[0891] La pluralidad de codificadores de información de atributos 5303 generan una pluralidad de piezas de información de atributos codificada codificando una pluralidad de piezas de información de atributos divisional. Por ejemplo, la pluralidad de codificadores de información de atributos 5303 procesan una pluralidad de piezas de información de atributos divisional en paralelo.
[0892] Como se ilustra en la FIG.93, el codificador de información de atributos 5303 incluye el calculador de valor de cuantización 5331 y el codificador entrópico 5332. El calculador de valor de cuantización 5321 genera un valor de cuantización (parámetro de cuantización) de información de atributos divisional que va a codificarse. El codificador entrópico 5332 calcula información de atributos cuantizada cuantizando la información de atributos divisional usando el valor de cuantización (parámetro de cuantización) generado por el calculador de valor de cuantización 5331.
[0893] El codificador de información adicional 5304 genera información adicional codificada codificando información adicional incluida en los datos de nube de puntos e información adicional relativa a la división de datos generada en la división por el divisor 5301.
[0894] El multiplexor 5305 genera datos codificados (flujo codificado) multiplexando una pluralidad de piezas de información geométrica codificada, una pluralidad de piezas de información de atributos codificada e información adicional codificada, y transmite los datos codificados generados. La información adicional codificada se usa para decodificación.
[0895] Debe observarse que, aunque la FIG.91 muestra un ejemplo en el que hay dos codificadores de información geométrica 5302 y dos codificadores de información de atributos 5303, el número de codificadores de información geométrica 5302 y el número de codificadores de información de atributos 5303 pueden ser uno, o tres o más. La pluralidad de piezas de datos divisionales puede procesarse en paralelo en el mismo chip, tal como por una pluralidad de núcleos de una CPU, procesarse en paralelo por núcleos de una pluralidad de chips, o procesarse en paralelo por una pluralidad de núcleos de una pluralidad de chips.
[0896] A continuación, se describirá un proceso de decodificación. La FIG.94 es un diagrama de bloques que ilustra una configuración del primer decodificador 5340. La FIG. 95 es un diagrama de bloques que ilustra una configuración del decodificador de información geométrica 5342 y del decodificador de información de atributos 5343.
[0897] El primer decodificador 5340 reproduce datos de nube de puntos decodificando datos codificados (flujo codificado) generados codificando los datos de nube de puntos en el primer método de codificación (GPCC). El primer decodificador 5340 incluye el demultiplexor 5341, una pluralidad de decodificadores de información geométrica 5342, una pluralidad de decodificadores de información de atributos 5343, el decodificador de información adicional 5344 y el combinador 5345.
[0898] El demultiplexor 5341 genera una pluralidad de piezas de información geométrica codificada, una pluralidad de piezas de información de atributos codificada e información adicional codificada demultiplexando datos codificados (flujo codificado).
[0899] La pluralidad de decodificadores de información geométrica 5342 generan una pluralidad de piezas de información geométrica cuantizada decodificando una pluralidad de piezas de información geométrica codificada. Por ejemplo, la pluralidad de decodificadores de información geométrica 5342 procesan una pluralidad de piezas de información geométrica codificada en paralelo.
[0900] Como se ilustra en la FIG.95, el decodificador de información geométrica 5342 incluye el calculador de valor de cuantización 5351 y el decodificador entrópico 5352. El calculador de valor de cuantización 5351 genera un valor de cuantización de información geométrica cuantizada. El decodificador entrópico 5352 calcula información geométrica cuantizando inversamente la información geométrica cuantizada usando el valor de cuantización generado por el calculador de valor de cuantización 5351.
[0901] La pluralidad de decodificadores de información de atributos 5343 generan una pluralidad de piezas de información de atributos divisional decodificando una pluralidad de piezas de información de atributos codificada. Por ejemplo, la pluralidad de decodificadores de información de atributos 5343 procesan una pluralidad de piezas de información de atributos codificada en paralelo.
[0902] Como se ilustra en la FIG.95, el decodificador de información de atributos 5343 incluye el calculador de valor de cuantización 5361 y el decodificador entrópico 5362. El calculador de valor de cuantización 5361 genera un valor de cuantización de información de atributos cuantizada. El decodificador entrópico 5362 calcula información de atributos cuantizando inversamente la información de atributos cuantizada usando el valor de cuantización generado por el calculador de valor de cuantización 5361.
[0903] La pluralidad de decodificadores de información adicional 5344 generan información adicional decodificando información adicional codificada.
[0904] El combinador 5345 genera información geométrica combinando una pluralidad de piezas de información geométrica divisional usando información adicional. El combinador 5345 genera información de atributos combinando una pluralidad de piezas de información de atributos divisional usando información adicional. Por ejemplo, el combinador 5345 primero genera datos de nube de puntos asociados con un mosaico combinando datos de nube de puntos decodificados asociados con tajadas usando información adicional de tajada. El combinador 5345 luego reproduce los datos de nube de puntos originales combinando datos de nube de puntos asociados con mosaicos usando información adicional de mosaico.
[0905] Debe observarse que, aunque la FIG.94 muestra un ejemplo en el que hay dos decodificadores de información geométrica 5342 y dos decodificadores de información de atributos 5343, el número de decodificadores de información geométrica 5342 y el número de decodificadores de información de atributos 5343 puede ser uno, o tres o más. La pluralidad de piezas de datos divisionales puede procesarse en paralelo en el mismo chip, tal como por una pluralidad de núcleos de una CPU, procesarse en paralelo por núcleos de una pluralidad de chips, o procesarse en paralelo por una pluralidad de núcleos de una pluralidad de chips.
[0906] Método de determinación de parámetro de cuantización
[0907] La FIG.96 es un diagrama de flujo que ilustra un ejemplo de un proceso relativo a la determinación de un valor de cuantización (valor de parámetro de cuantización: valor QP) en la codificación de información geométrica (geometría) o la codificación de información de atributos (atributo).
[0908] Un valor QP se determina considerando la eficiencia de codificación sobre una base de unidades de datos de información geométrica o información de atributos que forman una trama PCC, por ejemplo. Cuando la unidad de datos es un mosaico o tajada resultante de división, el valor QP se determina sobre una base de unidades de datos divisionales considerando la eficiencia de codificación de las unidades de datos divisionales. El valor QP puede determinarse sobre una base de unidades de datos antes de la división.
[0909] Como se ilustra en la FIG.96, el dispositivo de codificación de datos tridimensionales determina un valor QP usado para la codificación de información geométrica (S5301). El dispositivo de codificación de datos tridimensionales puede determinar el valor QP para cada una de una pluralidad de tajadas divisionales de una manera predeterminada. Específicamente, el dispositivo de codificación de datos tridimensionales determina el valor QP basándose en las características o calidad de los datos de la información geométrica. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede determinar la densidad de datos de nube de puntos para cada unidad de datos, es decir, el número de puntos por área unitaria que pertenecen a cada tajada, y determinar un valor correspondiente a la densidad de datos de nube de puntos como el valor QP. Alternativamente, el dispositivo de codificación de datos tridimensionales puede determinar, como el valor QP, cualquiera de los siguientes valores correspondientes a información geométrica: el número de puntos de datos de nube de puntos, la distribución de puntos de datos de nube de puntos, el desequilibrio de puntos de datos de nube de puntos, una cantidad de característica obtenida a partir de información sobre puntos, el número de puntos de característica, o un objeto reconocido. El dispositivo de codificación de datos tridimensionales también puede determinar un objeto asociado con información geométrica de un mapa y determinar el valor QP basándose en el objeto basado en la información geométrica, o puede determinar el valor QP basándose en información o una cantidad de característica obtenida proyectando una nube de puntos tridimensional sobre un plano bidimensional. El valor QP correspondiente puede almacenarse en una memoria de antemano en forma de una tabla que asocia el valor QP con la densidad, el número de puntos, la distribución de puntos, o el desequilibrio de puntos de datos de nube de puntos. El valor QP correspondiente también puede almacenarse en una memoria de antemano en forma de una tabla que asocia el valor QP con una cantidad de característica o el número de puntos de característica obtenidos a partir de información sobre puntos o un objeto reconocido basándose en la información sobre puntos. El valor QP correspondiente puede determinarse basándose en un resultado de simulación de la eficiencia de codificación o similar usando diversos valores QP en la codificación de la información geométrica relativa a datos de nube de puntos.
[0911] El dispositivo de codificación de datos tridimensionales luego determina un valor de referencia (valor por defecto) e información de diferencia (delta de cuantización) sobre el valor QP para información geométrica (S5302). Específicamente, el dispositivo de codificación de datos tridimensionales determina un valor de referencia e información de diferencia que van a transmitirse usando el valor QP determinado de una manera predeterminada, y establece (añade) el valor de referencia y la información de diferencia determinados en al menos uno de la información adicional o el encabezado de los datos.
[0913] El dispositivo de codificación de datos tridimensionales luego determina un valor QP usado para la codificación de información de atributos (S5303). El dispositivo de codificación de datos tridimensionales puede determinar el valor QP para cada una de una pluralidad de tajadas divisionales de una manera predeterminada. Específicamente, el dispositivo de codificación de datos tridimensionales determina el valor QP basándose en las características o calidad de los datos de la información de atributos. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede determinar el valor QP sobre una base de unidades de datos basándose en las características de la información de atributos. Las características de color incluyen luminancia, cromaticidad y croma, un histograma de las mismas, y continuidad de color, por ejemplo. Cuando la información de atributos es reflectancia, el valor QP puede determinarse basándose en información basada en la reflectancia. Por ejemplo, cuando una cara se detecta como un objeto a partir de datos de nube de puntos, el dispositivo de codificación de datos tridimensionales puede determinar un valor QP de alta calidad para los datos de nube de puntos que forman el objeto detectado como una cara. De esta manera, el dispositivo de codificación de datos tridimensionales puede determinar el valor QP para los datos de nube de puntos que forman un objeto dependiendo del tipo del objeto.
[0915] Cuando un punto tridimensional tiene una pluralidad de piezas de información de atributos, el dispositivo de codificación de datos tridimensionales puede determinar un valor QP diferente para cada pieza de información de atributos basándose en la pieza de información de atributos. Alternativamente, el dispositivo de codificación de datos tridimensionales puede determinar un valor QP para la pluralidad de piezas de información de atributos basándose en cualquiera de las piezas de información de atributos, o determinar un valor QP para la pluralidad de piezas de información de atributos basándose en una pluralidad de piezas de información de atributos.
[0916] El dispositivo de codificación de datos tridimensionales luego determina un valor de referencia (valor por defecto) e información de diferencia (delta de cuantización) sobre el valor QP para información de atributos (S5304). Específicamente, el dispositivo de codificación de datos tridimensionales determina un valor de referencia e información de diferencia que van a transmitirse usando el valor QP determinado de una manera predeterminada, y establece (añade) el valor de referencia y la información de diferencia determinados en al menos uno de la información adicional o el encabezado de los datos.
[0918] El dispositivo de codificación de datos tridimensionales luego cuantiza y codifica la información geométrica y la información de atributos basándose en los valores QP determinados para información geométrica e información de atributos, respectivamente (S5305).
[0920] Debe observarse que aunque se ha descrito un ejemplo en el que el valor QP para información geométrica se determina basándose en la información geométrica, y el valor QP para información de atributos se determina
basándose en la información de atributos, la presente divulgación no está limitada a ello. Por ejemplo, los valores QP para información geométrica e información de atributos pueden determinarse basándose en la información geométrica, basándose en la información de atributos, o basándose en la información geométrica y la información de atributos.
[0921] Debe observarse que los valores QP para información geométrica e información de atributos pueden ajustarse considerando el equilibrio entre la calidad de la información geométrica y la calidad de la información de atributos en los datos de nube de puntos. Por ejemplo, los valores QP para información geométrica e información de atributos pueden establecerse de tal manera que la calidad de la información geométrica sea alta, y la calidad de la información de atributos sea menor que la calidad de la información geométrica. Por ejemplo, el valor QP para información de atributos puede determinarse bajo una restricción de que el valor QP para información de atributos sea igual a o mayor que el valor QP para información geométrica.
[0922] El valor QP puede ajustarse de modo que se generen datos codificados dentro de un intervalo predeterminado de tasa. Por ejemplo, cuando se espera que la cantidad de código de la codificación de la unidad de datos precedente exceda una tasa predeterminada, es decir, cuando la diferencia con respecto a una tasa predeterminada es menor que una primera diferencia, el valor QP puede ajustarse para disminuir la calidad de codificación de modo que la diferencia entre la tasa predeterminada y la cantidad de código de la unidad de datos sea menor que la primera diferencia. Por otro lado, cuando la diferencia con respecto a la tasa predeterminada es mayor que una segunda diferencia, que es mayor que la primera diferencia, y existe una diferencia sustancial, el valor QP puede ajustarse para mejorar la calidad de codificación de la unidad de datos. El ajuste entre unidades de datos puede hacerse entre tramas PCC o entre mosaicos o tajadas. El ajuste del valor QP para información de atributos puede hacerse basándose en la tasa de codificación de información geométrica.
[0923] Debe observarse que, en el diagrama de flujo de la FIG.96, el procesamiento relativo a información geométrica y el procesamiento relativo a información de atributos pueden realizarse en orden inverso o en paralelo. Debe observarse que, aunque el diagrama de flujo de la FIG.96 muestra un proceso basado en tajadas como un ejemplo, un proceso basado en mosaicos o un proceso sobre una base de otras unidades de datos puede realizarse de la misma manera que el proceso basado en tajadas. Es decir, tajada en el diagrama de flujo de FIG.96 puede reemplazarse con mosaico u otras unidades de datos.
[0924] La FIG. 97 es un diagrama de flujo que ilustra un ejemplo de un proceso de decodificación de información geométrica e información de atributos.
[0925] Como se ilustra en la FIG.97, el dispositivo de decodificación de datos tridimensionales obtiene un valor de referencia e información de diferencia que indican un valor QP para información geométrica, y un valor de referencia e información de diferencia que indican un valor QP para información de atributos (S5311). Específicamente, el dispositivo de decodificación de datos tridimensionales analiza uno o ambos de los metadatos transmitidos o el encabezado de los datos codificados transmitidos, y obtiene valores de referencia e información de diferencia para derivar los valores QP.
[0926] El dispositivo de decodificación de datos tridimensionales luego deriva los valores QP usando los valores de referencia y la información de diferencia obtenidos de una manera predeterminada.
[0927] El dispositivo de decodificación de datos tridimensionales luego obtiene información geométrica cuantizada, y obtiene información geométrica cuantizando inversamente la información geométrica cuantizada usando el valor QP derivado (S5313).
[0928] El dispositivo de decodificación de datos tridimensionales luego obtiene información de atributos cuantizada, y obtiene información de atributos cuantizando inversamente la información de atributos cuantizada usando el valor QP derivado (S5314).
[0929] A continuación, se describirá un método de transmisión de un parámetro de cuantización.
[0930] La FIG. 98 es un diagrama para describir un primer ejemplo del método de transmisión de un parámetro de cuantización. La parte (a) de la FIG.98 muestra un ejemplo de una relación entre valores QP.
[0931] En la FIG. 98, Q<G>y Q<A>denotan un valor absoluto de un valor QP usado para la codificación de información geométrica y un valor absoluto de un valor QP usado para la codificación de información de atributos, respectivamente. Q<G>es un ejemplo de un primer parámetro de cuantización usado para cuantizar información geométrica sobre cada uno de una pluralidad de puntos tridimensionales. Δ(Q<A>, Q<G>) denota información de diferencia que indica una diferencia entre Q<A>y Q<G>usada para derivar Q<A>. Es decir, Q<A>se deriva usando Q<G>y Δ(Q<A>, Q<G>). De esta manera, un valor Q<P>se separa en un valor de referencia (valor absoluto) e información de diferencia (valor relativo) para transmisión. En la decodificación, un valor QP deseado se deriva a partir del valor de referencia transmitido y la información de diferencia.
[0932] Por ejemplo, en la parte (a) de la FIG. 98, se transmiten el valor absoluto Q<G>y la información de diferencia Δ(Q<A>, Q<G>), y en la decodificación, Q<A>se deriva añadiendo Δ(Q<A>, Q<G>) a Q<G>como se muestra mediante la Ecuación G5 a continuación.
[0935]
[0937] Con referencia a las partes (b) y (c) de la FIG.98, se describirá un método de transmisión de valores QP en un caso en donde los datos de nube de puntos que incluyen información geométrica e información de atributos se dividen en tajadas. La parte (b) de la FIG. 98 muestra un primer ejemplo de una relación entre un valor de referencia e información de diferencia para cada valor QP. La parte (c) de la FIG.98 muestra un primer ejemplo de un orden de transmisión de valores QP, información geométrica e información de atributos.
[0938] Para cada pieza de información geométrica y cada pieza de información de atributos, los valores QP se clasifican en valores QP (QP de trama) en unidades de tramas PCC y valores QP (QP de datos) en unidades de datos. El valor QP usado para la codificación determinado en la etapa S5301 en la FIG.96 es un valor QP en unidades de datos.
[0939] Aquí, Q<G>, que es un valor QP usado para la codificación de información geométrica en unidades de tramas PCC, se usa como un valor de referencia, y un valor QP en unidades de datos se genera y transmite como información de diferencia que indica la diferencia con respecto a Q<G>.
[0940] Q<G>: un valor QP para la codificación de información geométrica para una trama PCC, que se transmite como un valor de referencia “1.” usando GPS.
[0941] Q<A>: un valor QP para la codificación de información de atributos para una trama PCC, que se transmite como información de diferencia “2.” usando APS.
[0942] Q<Gs1>, Q<Gs2>: valores QP para la codificación de información geométrica de datos de tajada, que se transmiten como información de diferencia “3.” y “5.” que indican una diferencia con respecto a Q<G>, respectivamente, usando el encabezado de los datos codificados de la información geométrica.
[0943] Q<As1>, Q<As2>: valores QP para la codificación de información de atributos de datos de tajada, que se transmiten como información de diferencia “4.” y “6.” que indican una diferencia con respecto a Q<A>, respectivamente, usando el encabezado de los datos codificados de la información de atributos.
[0944] Debe observarse que la información usada para derivar un QP de trama se describe en metadatos (GPS, APS) asociados con la trama, y la información usada para derivar un QP de datos se describe en metadatos (encabezado de datos codificados) asociados con los datos.
[0945] De esta manera, el QP de datos se genera y transmite como información de diferencia que indica una diferencia con respecto al QP de trama. Por lo tanto, puede reducirse la cantidad de datos del QP de datos.
[0946] En cada pieza de datos codificados, el primer decodificador 5340 se remite a los metadatos indicados por una flecha en la parte (c) de la FIG.98, y obtiene un valor de referencia e información de diferencia asociados con los datos codificados. El primer decodificador 5340 luego deriva un valor QP correspondiente a los datos codificados que van a decodificarse basándose en el valor de referencia y la información de diferencia obtenidos.
[0947] Por ejemplo, el primer decodificador 5340 obtiene la información de referencia “1.” y la información de diferencia “2.” y “6.” indicadas por flechas en la parte (c) de la FIG.98 a partir de los metadatos o el encabezado, y deriva el valor QP de As2 añadiendo la información de diferencia “2.” y “6.” a la información de referencia “1.” como se muestra mediante la Ecuación G6 a continuación.
[0950]
[0952] Los datos de nube de puntos incluyen información geométrica y cero o más piezas de información de atributos. Es decir, los datos de nube de puntos pueden no incluir información de atributos o una pluralidad de piezas de información de atributos.
[0953] Por ejemplo, un punto tridimensional puede tener, como información de atributos, información de color, información de color e información de reflectancia, o una o más piezas de información de color enlazadas a una o más piezas de información de punto de vista.
[0954] Aquí, se describirá un ejemplo de un caso en donde un punto tridimensional tiene dos piezas de información de color e información de reflectancia con referencia a la FIG.99. La FIG.99 es un diagrama para describir un segundo ejemplo del método de transmisión de un parámetro de cuantización. La parte (a) de la FIG.99 es un diagrama que ilustra un segundo ejemplo de la relación entre un valor de referencia e información de diferencia
para cada valor QP. La parte (b) de la FIG.99 es un diagrama que ilustra un segundo ejemplo del orden de transmisión de valores QP, información geométrica e información de atributos.
[0955] Q<G>es un ejemplo del primer parámetro de cuantización como en la FIG.98.
[0956] Dos piezas de información de color se indican por luminancia (luma) Y y crominancias (chroma) Cb, Cr, respectivamente. Q<Y1>, que es un valor QP usado para la codificación de luminancia Y1 de un primer color, se deriva de Q<G>, que es un valor de referencia, y Δ(Q<Y1>, Q<G>), que indica la diferencia entre Q<Y1>y Q<G>. La luminancia Y1 es un ejemplo de una primera luminancia, y Q<Y1>es un ejemplo de un segundo parámetro de cuantización usado para cuantizar la luminancia Y1 como la primera luminancia. Δ(Q<Y1>, Q<G>) es información de diferencia “2.”.
[0957] Q<Cb1>y Q<Cr1>, que son valores QP usados para la codificación de crominancias Cb1 y Cr1 del primer color, se derivan de Q<Y1>y Δ(Q<Cb1>, Q<Y1>) y Δ(Q<Cr1>, Q<Y1>), que indican la diferencia entre Q<Cb1>y Q<Y1>y la diferencia entre Q<Cr1>y Q<Y1>, respectivamente. Las crominancias C<b1>y C<r1>son ejemplos de una primera crominancia, y QCb1 y Q<Cr1>son ejemplos de un tercer parámetro de cuantización usado para cuantizar las crominancias Cb1 y Cr1 como la primera crominancia. Δ(Q<Cb1>, Q<Y1>) es información de diferencia “3.”, y Δ(Q<Cr1>, Q<Y1>) es información de diferencia “4.”. Δ(Q<Cb1>, Q<Y1>) y Δ(Q<Cr1>, Q<Y1>) son ejemplos de una primera diferencia.
[0958] Debe observarse que Q<Cb1>y Q<Cr1>pueden ser valores idénticos o un valor común. Cuando se usa un valor común, puede usarse uno de Q<Cb1>y Q<Cr1>, y el otro puede omitirse.
[0959] Q<Y1D>, que es un valor QP usado para la codificación de luminancia Y1D del primer color en los datos de tajada, se deriva de Q<Y1>y Δ(Q<Y1D>, Q<Y1>) que indica la diferencia entre Q<Y1D>y Q<Y1>. La luminancia Y1D del primer color en los datos de tajada es un ejemplo de la primera luminancia de uno o más puntos tridimensionales incluidos en el subespacio, y Q<Y1D>es un ejemplo de un quinto parámetro de cuantización usado para cuantizar la luminancia Y<1D>. Δ(Q<Y1D>, Q<Y1>) es información de diferencia “10.”, y un ejemplo de una segunda diferencia. De manera similar, Q<Cb1D>y Q<Cr1D>, que son valores QP usados para la codificación de crominancias CblD y Cr1D del primer color en los datos de tajada, se derivan de Q<Cb1>y Δ(Q<Cb1D>, Q<Cb1>) que indica la diferencia entre Q<Cb1D>y Q<Cb1>y Q<Cr1>y Δ(Q<Cr1D>, Q<Cr1>) que indica la diferencia entre Q<Cr1D>y Q<Cr1>, respectivamente. Las crominancias CblD y Cr1D del primer color en los datos de tajada son ejemplos de la primera crominancia de uno o más puntos tridimensionales incluidos en el subespacio, y Q<Cb1D>y Q<Cr1D>son ejemplos de un sexto parámetro de cuantización usado para cuantizar las crominancias Cb1D y Cr1D. Δ(Q<Cb1D>, Q<Cb1>) es información de diferencia “11.”, y Δ(Q<Cr1D>, Q<Cr1>) es información de diferencia “12.”. Δ(Q<Cb1D>, Q<Cb1>) y Δ(Q<Cr1D>, Q<Cr1>) son ejemplos de una tercera diferencia.
[0960] La relación entre valores QP para el primer color se mantiene para un segundo color, de modo que se omitirán descripciones redundantes.
[0961] Q<R>, que es un valor QP usado para la codificación de reflectancia R, se deriva de Q<G>, que es un valor de referencia, y Δ(Q<R>, Q<G>), que indica la diferencia entre Q<R>y Q<G>. Q<R>es un ejemplo de un cuarto parámetro de cuantización usado para cuantizar la reflectancia R. Δ(Q<R>, Q<G>) es información de diferencia “8.”.
[0962] Q<RD>, que es un valor QP usado para la codificación de reflectancia RD en los datos de tajada, se deriva de Q<R>y Δ(Q<RD>, Q<R>), que indica la diferencia entre Q<RD>y Q<R>. Δ(Q<RD>, Q<R>) es información de diferencia “16.”.
[0963] Como se ha descrito anteriormente, la información de diferencia “9.” a “16.” indica la diferencia entre un QP de datos y un QP de trama.
[0964] Debe observarse que cuando los valores del QP de datos y del QP de trama son los mismos, por ejemplo, la información de diferencia puede establecerse en 0, o puede no transmitirse, y la ausencia de la transmisión puede considerarse como información de diferencia de 0.
[0965] Al obtener crominancia Cr2 del segundo color mediante decodificación, por ejemplo, el primer decodificador 5340 obtiene la información de referencia “1.” y la información de diferencia “5.”, “7.” y “15.” indicadas por flechas en la parte (b) de la FIG. 99 a partir de los metadatos o el encabezado, y deriva el valor QP de crominancia Cr2 añadiendo la información de diferencia “5.”, “7.” y “15.” a la información de referencia “1.” como se muestra mediante la Ecuación G7 a continuación.
[0968]
[0970] A continuación, se describirá un ejemplo de un caso en donde la información geométrica y la información de atributos se dividen en dos mosaicos y luego se dividen en dos tajadas con referencia a la FIG.100. La FIG.
[0971] 100 es un diagrama para describir un tercer ejemplo del método de transmisión de un parámetro de cuantización. La parte (a) de la FIG.100 muestra un tercer ejemplo de la relación entre un valor de referencia e información de diferencia para cada valor QP. La parte (b) de la FIG.100 muestra un tercer ejemplo del orden
de transmisión de valores QP, información geométrica e información de atributos. La parte (c) de la FIG.100 describe un valor generado intermedio para información de diferencia en el tercer ejemplo.
[0972] Cuando la información geométrica y la información de atributos se dividen en una pluralidad de mosaicos y luego se dividen adicionalmente en una pluralidad de tajadas, como se ilustra en la parte (c) de la FIG.100, después de que la información de atributos se divide en mosaicos, un valor QP (Q<At1>) e información de diferencia Δ(Q<At1>, Q<A>) para cada mosaico se generan como valores generados intermedios. Después de que el mosaico se divide en tajadas, los valores QP (Q<At1s1>, Q<At1s2>) y la información de diferencia (Δ(Q<At1s1>, Q<At1>), Δ(Q<At1s2>, Q<At1>)) se generan para cada tajada.
[0973] En este caso, la información de diferencia “4.” en la parte (a) de la FIG. 100 se deriva de acuerdo con la Ecuación G8 a continuación.
[0976]
[0978] Al obtener información de atributos A<t2s1>para tajada 1 en mosaico 2 mediante decodificación, por ejemplo, el primer decodificador 5340 obtiene la información de referencia “1.” y la información de diferencia “2.” y “8.” indicadas por flechas en la parte (b) de FIG.100 a partir de los metadatos o el encabezado, y deriva el valor QP de información de atributos At<2>s<1>añadiendo la información de diferencia “2.” y “8.” a la información de referencia “1.” como se muestra mediante la Ecuación G9 a continuación.
[0979] A continuación, se describirá un flujo de un proceso de codificación de datos de nube de puntos y un flujo de un proceso de decodificación de datos de nube de puntos de acuerdo con la presente realización. La FIG.101 es un diagrama de flujo de un proceso de codificación de datos de nube de puntos de acuerdo con la presente realización.
[0982]
[0985] En primer lugar, el dispositivo de codificación de datos tridimensionales determina un método de división que se utilizará (S5321). El método de división incluye una determinación de si realizar o no una división en mosaicos y una determinación de si realizar o no una división en tajadas. El método de división puede incluir el número de mosaicos o tajadas en el caso en que se realice una división en mosaicos o una división en tajadas, y el tipo de división, por ejemplo. El tipo de división es un esquema basado en la forma de un objeto, un esquema basado en información de mapa o información de geometría, o un esquema basado en una cantidad de datos o una cantidad de procesamiento, por ejemplo. Cabe señalar que el método de división puede determinarse por adelantado.
[0986] Cuando se va a realizar una división en mosaicos (si Sí en S5322), el dispositivo de codificación de datos tridimensionales genera una pluralidad de piezas de información de geometría de mosaico y una pluralidad de piezas de información de atributos de mosaico dividiendo la información de geometría y la información de atributos por mosaico (S5323). El dispositivo de codificación de datos tridimensionales también genera información adicional de mosaico relativa a la división en mosaicos.
[0987] Cuando se va a realizar una división en tajadas (si Sí en S5324), el dispositivo de codificación de datos tridimensionales genera una pluralidad de piezas de información de geometría dividida y una pluralidad de piezas de información de atributos dividida dividiendo la pluralidad de piezas de información de geometría de mosaico y la pluralidad de piezas de información de atributos de mosaico (o la información de geometría y la información de atributos) (S5325). El dispositivo de codificación de datos tridimensionales también genera información adicional de tajada de geometría e información adicional de tajada de atributos relativas a la división en tajadas.
[0988] El dispositivo de codificación de datos tridimensionales genera entonces una pluralidad de piezas de información de geometría codificada y una pluralidad de piezas de información de atributos codificada codificando cada una de la pluralidad de piezas de información de geometría dividida y la pluralidad de piezas de información de atributos dividida (S5326). El dispositivo de codificación de datos tridimensionales también genera información de dependencia.
[0989] El dispositivo de codificación de datos tridimensionales genera entonces datos codificados (flujo codificado) integrando (multiplexando) la pluralidad de piezas de información de geometría codificada, la pluralidad de piezas de información de atributos codificada y la información adicional en una unidad NAL (S5327). El dispositivo de codificación de datos tridimensionales también transmite los datos codificados generados. La FIG.102 es un diagrama de flujo que ilustra un ejemplo de un proceso de determinación de un valor de QP y actualización de información adicional en la división en mosaicos (S5323) y la división en tajadas (S5325).
[0990] En las etapas S5323 y S5325, la información de geometría de mosaico y la información de atributos de mosaico y/o la información de geometría de tajada y la información de atributos de tajada pueden dividirse independientemente de maneras respectivas, o pueden dividirse colectivamente de una manera común. De esta manera, se genera información adicional dividida por mosaico y/o por tajada.
[0991] En estas etapas, el dispositivo de codificación de datos tridimensionales determina un valor de referencia e información de diferencia para un valor de QP por mosaico dividido y/o por tajada dividida (S5331). Específicamente, el dispositivo de codificación de datos tridimensionales determina un valor de referencia e información de diferencia como los ilustrados en las FIGS.98 a 100.
[0992] El dispositivo de codificación de datos tridimensionales actualiza entonces la información adicional para incluir el valor de referencia y la información de diferencia determinados (S5332).
[0993] La FIG.103 es un diagrama de flujo que ilustra un ejemplo de un proceso de codificación (S5326).
[0994] El dispositivo de codificación de datos tridimensionales codifica cada una de la pluralidad de piezas de información de geometría dividida y la pluralidad de piezas de información de atributos dividida (S5341). Específicamente, el dispositivo de codificación de datos tridimensionales codifica cada una de la pluralidad de piezas de información de geometría dividida y la pluralidad de piezas de información de atributos dividida utilizando el valor de QP determinado.
[0995] El dispositivo de codificación de datos tridimensionales continúa entonces el proceso de codificación hasta que se satisface una condición para detener el proceso de codificación, tal como hasta que no haya datos por codificar (S5342).
[0996] La FIG.104 es un diagrama de flujo que ilustra un proceso de decodificación de datos de nube de puntos de acuerdo con la presente realización. En primer lugar, el dispositivo de decodificación de datos tridimensionales determina el método de división analizando información adicional (información adicional de mosaico, información adicional de tajada de geometría e información adicional de tajada de atributos) relativa al método de división incluida en datos codificados (flujo codificado) (S5351). El método de división incluye una determinación de si realizar o no una división en mosaicos y una determinación de si realizar o no una división en tajadas. El método de división puede incluir el número de mosaicos o tajadas en el caso en que se realice una división en mosaicos o una división en tajadas, y el tipo de división, por ejemplo.
[0997] El dispositivo de decodificación de datos tridimensionales genera entonces información de geometría dividida e información de atributos dividida decodificando una pluralidad de piezas de información de geometría codificada y una pluralidad de piezas de información de atributos codificada incluidas en los datos codificados utilizando información de dependencia incluida en los datos codificados (S5352).
[0998] Si la información adicional indica que se ha realizado una división en tajadas (si Sí en S5353), el dispositivo de decodificación de datos tridimensionales genera una pluralidad de piezas de información de geometría de mosaico y una pluralidad de piezas de información de atributos de mosaico combinando la pluralidad de piezas de información de geometría dividida y la pluralidad de piezas de información de atributos dividida basándose en la información adicional de tajada de geometría y la información adicional de tajada de atributos (S5354). Si la información adicional indica que se ha realizado una división en mosaicos (si Sí en S5355), el dispositivo de decodificación de datos tridimensionales genera información de geometría e información de atributos combinando la pluralidad de piezas de información de geometría de mosaico y la pluralidad de piezas de información de atributos de mosaico (la pluralidad de piezas de información de geometría dividida y la pluralidad de piezas de información de atributos dividida) basándose en la información adicional de mosaico (S5356). La FIG.105 es un diagrama de flujo que ilustra un ejemplo de un proceso de obtención de valores de QP y decodificación de un valor de QP para una tajada o mosaico en la combinación de información dividida en tajadas (S5354) y la combinación de información dividida en mosaicos (S5356).
[0999] Las piezas de información de geometría de tajada y las piezas de información de atributos de tajada o las piezas de información de geometría de mosaico o las piezas de información de atributos de mosaico pueden combinarse de maneras respectivas o de la misma manera.
[1000] El dispositivo de decodificación de datos tridimensionales obtiene el valor de referencia y la información de diferencia decodificando la información adicional en el flujo codificado (S5361).
[1001] El dispositivo de decodificación de datos tridimensionales calcula entonces un valor de cuantización utilizando el valor de referencia decodificado y la información de diferencia, y actualiza el valor de QP utilizado para la cuantización inversa al valor de QP calculado (S5362). De esta manera, puede derivarse un valor de QP para la cuantización inversa de información de atributos cuantizada para cada mosaico o tajada.
[1002] El dispositivo de decodificación de datos tridimensionales continúa entonces el proceso de decodificación hasta que se satisface una condición para detener el proceso de decodificación, tal como hasta que no haya datos por decodificar (S5363).
[1003] La FIG.106 es un diagrama que ilustra un ejemplo de sintaxis de GPS. La FIG.107 es un diagrama que ilustra un ejemplo de sintaxis de APS. La FIG.108 es un diagrama que ilustra un ejemplo de sintaxis de un encabezado de información de geometría. La FIG.109 es un diagrama que ilustra un ejemplo de sintaxis de un encabezado de información de atributos.
[1004] Como se ilustra en la FIG.106, por ejemplo, GPS, que es información adicional de información de geometría, incluye QP_value, que indica un valor absoluto utilizado como referencia para derivar un valor de QP. QP_value corresponde a QG ilustrado en las FIGS.98 a 100.
[1005] Como se ilustra en la FIG.107, por ejemplo, cuando un punto tridimensional tiene una pluralidad de piezas de información de color asociadas con una pluralidad de puntos de vista, APS, que es información adicional de información de atributos, puede definir un punto de vista predeterminado, y una 0-ésima pieza de información de atributos puede describir siempre información sobre el punto de vista predeterminado. Por ejemplo, al decodificar o visualizar una única pieza de información de color, el dispositivo de codificación de datos tridimensionales puede decodificar o visualizar la 0-ésima pieza de información de atributos.
[1006] APS incluye QP_delta_Attribute_to_Geometry. QP_delta_Attribute_to_Geometry es información de diferencia que indica la diferencia con respecto al valor de referencia (QP_value) descrito en GPS. La información de diferencia indica una diferencia de luminancia cuando la información de atributos es información de color, por ejemplo.
[1007] GPS puede incluir un indicador que indica si Geometry_header (encabezado de la información de geometría) incluye o no información de diferencia utilizada para calcular un valor de QP. APS puede incluir un indicador que indica si Attribute_header (encabezado de la información de atributos) incluye o no información de diferencia utilizada para calcular un valor de QP. El indicador puede indicar si la información de atributos incluye o no información de diferencia que indica la diferencia de un QP de datos con respecto a un QP de trama, que se utiliza para calcular el QP de datos.
[1008] Cuando un primer color de información de atributos está indicado por una primera luminancia y una primera crominancia, en la cuantización de la primera luminancia utilizando un segundo parámetro de cuantización y la cuantización de la primera crominancia utilizando un tercer parámetro de cuantización, si las cuantizaciones se realizan utilizando un quinto parámetro de cuantización y un sexto parámetro de cuantización, el flujo codificado puede incluir información de identificación (indicador) que indica que las cuantizaciones se realizan utilizando el quinto parámetro de cuantización y el sexto parámetro de cuantización.
[1009] Como se ilustra en la FIG. 108, el encabezado de la información de geometría puede incluir QP_delta_data_to_frame, que es información de diferencia que indica la diferencia con respecto al valor de referencia (QP_value) descrito en GPS. El encabezado de la información de geometría puede dividirse en piezas de información asociadas con mosaicos y/o tajadas, y puede indicarse un valor de QP correspondiente a cada mosaico y/o tajada.
[1010] Como se ilustra en la FIG. 109, el encabezado de la información de atributos puede incluir QP_delta_data_to_frame, que es información de diferencia que indica la diferencia con respecto al valor de QP descrito en APS.
[1011] Aunque el valor de referencia de un valor de QP se ha descrito como un valor de QP de información de geometría para una trama PCC con referencia a las FIGS.98 a 100, la presente divulgación no está limitada a ello, y pueden utilizarse otros valores como valor de referencia.
[1012] La FIG. 110 es un diagrama para describir otro ejemplo del método de transmisión de un parámetro de cuantización.
[1013] Las partes (a) y (b) de la FIG. 110 ilustran un cuarto ejemplo, en el que se establece un valor de referencia común Q basándose en valores de QP de información de geometría e información de atributos para una trama PCC. En el cuarto ejemplo, el valor de referencia Q se almacena en GPS, la información de diferencia que indica la diferencia de un valor de QP (Q<G>) de información de geometría con respecto al valor de referencia Q se almacena en GPS, y la información de diferencia que indica las diferencias de valores de QP (Q<Y>y Q<R>) de información de atributos con respecto al valor de referencia Q se almacena en APS. Cabe señalar que el valor de referencia Q puede almacenarse en SPS.
[1014] Las partes (c) y (d) de la FIG. 110 ilustran un quinto ejemplo, en el que se establece un valor de referencia diferente para cada una de la información de geometría y la información de atributos. En el quinto ejemplo, los valores de QP de referencia (valores absolutos) de la información de geometría y la información de atributos se almacenan en GPS y APS, respectivamente. Es decir, el valor de referencia Q<G>se establece en la
información de geometría, el valor de referencia Q<Y>se establece en la información de color de la información de atributos, y el valor de referencia Q<R>se establece como reflectancia de la información de atributos. De esta manera, puede establecerse un valor de referencia de un valor de QP para cada una de la información de geometría y una pluralidad de tipos de información de atributos. Cabe señalar que el quinto ejemplo puede combinarse con otro ejemplo. Es decir, Q<A>en el primer ejemplo, o Q<Y1>, Q<Y2>y Q<R>en el segundo ejemplo pueden ser un valor de referencia de un valor de QP.
[1015] Las partes (e) y (f) de la FIG.110 ilustran un sexto ejemplo, en el que cuando existe una pluralidad de tramas PCC, se establece un valor de referencia común Q para la pluralidad de tramas PCC. En el sexto ejemplo, el valor de referencia Q se almacena en SPS o GPS, y la información de diferencia que indica la diferencia entre el valor de QP de la información de geometría y el valor de referencia para cada trama PCC se almacena en GPS. Cabe señalar que, dentro del intervalo de una unidad de acceso aleatorio, tal como GOF, por ejemplo, la trama principal de la unidad de acceso aleatorio puede designarse como valor de referencia, y puede transmitirse información de diferencia Δ(Q<G(1)>, Q<G(0)>) que indica las diferencias entre las tramas PCC.
[1016] Cabe señalar que, incluso cuando un mosaico o una tajada se divide adicionalmente, la información de diferencia que indica la diferencia con respecto al valor de QP de la unidad de división se almacena en el encabezado de datos y se transmite de la misma manera.
[1017] La FIG. 111 es un diagrama para describir otro ejemplo del método de transmisión de un parámetro de cuantización.
[1018] Las partes (a) y (b) de la FIG.111 ilustran un séptimo ejemplo, en el que se establece un valor de referencia común Q<G>para la información de geometría y la información de atributos de una trama PCC. En el séptimo ejemplo, el valor de referencia QG se almacena en GPS, y la información de diferencia que indica las diferencias con respecto a la información de geometría o la información de atributos se almacena en los respectivos encabezados de datos. El valor de referencia Q<G>puede almacenarse en SPS.
[1019] Las partes (c) y (d) de la FIG.111 muestran un octavo ejemplo, en el que un valor de QP de información de atributos está indicado por información de diferencia que indica la diferencia con respecto a un valor de QP de información de geometría perteneciente a la misma tajada y mosaico. En el octavo ejemplo, el valor de referencia Q<G>puede almacenarse en SPS.
[1020] La FIG.112 es un diagrama para describir un noveno ejemplo del método de transmisión de un parámetro de cuantización.
[1021] Las partes (a) y (b) ilustran el noveno ejemplo, en el que una pluralidad de piezas de información de atributos tiene un valor de QP común, y cada pieza de información de atributos indica información de diferencia que indica la diferencia entre el valor de QP común y el valor de QP de la información de geometría e información de diferencia que indica la diferencia con respecto al valor de la información de atributos y el valor de QP común.
[1022] La FIG.113 es un diagrama para describir un ejemplo de control de un valor de QP.
[1023] A medida que disminuye el valor del parámetro de cuantización, mejora la calidad, mientras que disminuye la eficiencia de codificación porque se requieren más bits.
[1024] Por ejemplo, al codificar datos de nube de puntos tridimensionales dividiendo los datos de nube de puntos tridimensionales en mosaicos, si los datos de nube de puntos incluidos en un mosaico corresponden a una carretera principal, los datos de nube de puntos se codifican utilizando un valor de QP previamente definido de información de atributos. Por otro lado, los mosaicos periféricos no incluyen información importante y, por lo tanto, la eficiencia de codificación puede mejorarse estableciendo la información de diferencia del valor de QP en un valor positivo para reducir la calidad de los datos.
[1025] Además, al codificar los datos de nube de puntos tridimensionales divididos en mosaicos mediante la división de los mosaicos en tajadas, una acera, un árbol y un edificio son importantes para la estimación de posición (localización y mapeado) en la conducción automática, por lo que el valor de QP se establece en un valor negativo. Por otro lado, un cuerpo en movimiento y otros objetos son menos importantes, por lo que el valor de QP se establece en un valor positivo.
[1026] La parte (b) de la FIG.113 muestra un ejemplo en el que se deriva información de diferencia en un caso en que un valor delta de cuantización se establece por adelantado basándose en el objeto incluido en un mosaico o tajada. Por ejemplo, cuando los datos divididos son datos de tajada sobre un “edificio” incluido en un mosaico de una “carretera principal”, la información de diferencia es -5, que se deriva sumando el valor delta de cuantización de 0 del mosaico de una “carretera principal” y el valor delta de cuantización de -5 de los datos de tajada sobre un “edificio”.
[1027] La FIG. 114 es un diagrama de flujo que ilustra un ejemplo de un método para determinar un valor de QP basándose en la calidad de un objeto.
[1028] El dispositivo de codificación de datos tridimensionales divide datos de nube de puntos en uno o más mosaicos basándose en información de mapa y determina un objeto incluido en el uno o más mosaicos (S5371). Específicamente, el dispositivo de codificación de datos tridimensionales realiza un proceso de reconocimiento de objetos para reconocer qué es un objeto utilizando un modelo de aprendizaje obtenido mediante aprendizaje automático, por ejemplo.
[1029] El dispositivo de codificación de datos tridimensionales determina entonces si codificar o no un mosaico que va a procesarse con alta calidad (S5372). Codificar con alta calidad significa codificar a una tasa de bits superior a una tasa predeterminada, por ejemplo.
[1030] Cuando el mosaico que va a procesarse debe codificarse con alta calidad (si Sí en S5372), el dispositivo de codificación de datos tridimensionales establece entonces el valor de QP del mosaico de manera que la eficiencia de codificación sea alta (S5373).
[1031] Por otro lado, cuando el mosaico que va a procesarse no debe codificarse con alta calidad (si No en S5372), el dispositivo de codificación de datos tridimensionales establece el valor de QP del mosaico de manera que la eficiencia de codificación sea baja (S5374).
[1032] Después de la etapa S5373 o S5374, el dispositivo de codificación de datos tridimensionales determina el objeto en el mosaico y divide el mosaico en una o más tajadas (S5375).
[1033] El dispositivo de codificación de datos tridimensionales determina entonces si codificar o no una tajada que va a procesarse con alta calidad (S5376).
[1034] Cuando la tajada que va a procesarse debe codificarse con alta calidad (si Sí en S5376), el dispositivo de codificación de datos tridimensionales establece entonces el valor de QP de la tajada de manera que la eficiencia de codificación sea alta (S5377).
[1035] Por otro lado, cuando la tajada que va a procesarse no debe codificarse con alta calidad (si No en S5376), el dispositivo de codificación de datos tridimensionales establece el valor de QP de la tajada de manera que la eficiencia de codificación sea baja (S5378).
[1036] El dispositivo de codificación de datos tridimensionales determina entonces un valor de referencia y una información de diferencia que van a transmitirse basándose en el valor de QP establecido de una manera predeterminada, y almacena el valor de referencia y la información de diferencia determinados en al menos una de la información adicional y el encabezado de los datos (S5379).
[1037] El dispositivo de codificación de datos tridimensionales cuantiza entonces y codifica la información de geometría y la información de atributos basándose en el valor de QP determinado (S5380).
[1038] La FIG. 115 es un diagrama de flujo que ilustra un ejemplo de un método para determinar un valor de QP basándose en un control de tasa.
[1039] El dispositivo de codificación de datos tridimensionales codifica secuencialmente datos de nube de puntos (S5381).
[1040] El dispositivo de codificación de datos tridimensionales determina entonces un estado de control de tasa relativo al proceso de codificación a partir de la cantidad de código de los datos codificados y la ocupación de un búfer de codificación, y determina la calidad de la codificación subsiguiente (S5382).
[1041] El dispositivo de codificación de datos tridimensionales determina entonces si se debe aumentar o no la calidad de codificación (S5383).
[1042] Cuando la calidad de codificación debe aumentarse (si Sí en S5383), el dispositivo de codificación de datos tridimensionales establece el valor de QP del mosaico de manera que la calidad de codificación sea mayor (S5384).
[1043] Por otro lado, cuando la calidad de codificación no debe aumentarse (si No en S5383), el dispositivo de codificación de datos tridimensionales establece el valor de QP del mosaico de manera que la calidad de codificación sea menor (S5385).
[1044] El dispositivo de codificación de datos tridimensionales determina entonces un valor de referencia e información de diferencia que se transmitirán basándose en el valor de QP establecido de una manera predeterminada, y almacena el valor de referencia determinado y la información de diferencia en al menos una de la información adicional y el encabezado de los datos (S5386).
[1045] El dispositivo de codificación de datos tridimensionales cuantiza entonces y codifica la información geométrica y la información de atributos basándose en el valor de QP determinado (S5387).
[1046] Como se describió anteriormente, el dispositivo de codificación de datos tridimensionales de acuerdo con la presente realización realiza el proceso ilustrado en la FIG.116. En primer lugar, el dispositivo de codificación de datos tridimensionales cuantiza información geométrica de cada uno de una pluralidad de puntos tridimensionales utilizando un primer parámetro de cuantización (S5391). El dispositivo de codificación de datos tridimensionales cuantiza una primera luminancia utilizando un segundo parámetro de cuantización y cuantiza una primera crominancia utilizando un tercer parámetro de cuantización, indicando la primera luminancia y la primera crominancia un primer color entre la información de atributos de cada uno de la pluralidad de puntos tridimensionales (S5392). El dispositivo de codificación de datos tridimensionales genera un flujo de bits que incluye la información geométrica cuantizada, la primera luminancia cuantizada, la primera crominancia cuantizada, el primer parámetro de cuantización, el segundo parámetro de cuantización y una primera diferencia entre el segundo parámetro de cuantización y el tercer parámetro de cuantización (S5393).
[1047] Con tal configuración, dado que el tercer parámetro de cuantización se indica mediante la primera diferencia con respecto al segundo parámetro de cuantización en el flujo de bits, la eficiencia de codificación puede mejorarse.
[1048] Por ejemplo, el dispositivo de codificación de datos tridimensionales además cuantiza una reflectancia entre la información de atributos de cada uno de la pluralidad de puntos tridimensionales utilizando un cuarto parámetro de cuantización. Además, en la generación descrita anteriormente, el flujo de bits generado incluye además la reflectancia cuantizada y el cuarto parámetro de cuantización.
[1049] Por ejemplo, en la cuantización utilizando el segundo parámetro de cuantización, para cada uno de una pluralidad de subespacios obtenidos dividiendo un espacio actual que incluye la pluralidad de puntos tridimensionales, la primera luminancia de uno o más puntos tridimensionales incluidos en el subespacio se cuantiza adicionalmente utilizando un quinto parámetro de cuantización. En la cuantización utilizando el tercer parámetro de cuantización, la primera crominancia de los uno o más puntos tridimensionales se cuantiza adicionalmente utilizando un sexto parámetro de cuantización. En la generación descrita anteriormente, el flujo de bits generado incluye además una segunda diferencia entre el segundo parámetro de cuantización y el quinto parámetro de cuantización y una tercera diferencia entre el tercer parámetro de cuantización y el sexto parámetro de cuantización.
[1050] Con tal configuración, dado que el quinto parámetro de cuantización se indica mediante la segunda diferencia con respecto al segundo parámetro de cuantización y el sexto parámetro de cuantización se indica mediante la tercera diferencia con respecto al tercer parámetro de cuantización en el flujo de bits, la eficiencia de codificación puede mejorarse.
[1051] Por ejemplo, en la generación descrita anteriormente, el flujo de bits generado incluye además información de identificación que indica que el quinto parámetro de cuantización y el sexto parámetro de cuantización se han utilizado en la cuantización utilizando el segundo parámetro de cuantización y la cuantización utilizando el tercer parámetro de cuantización, respectivamente.
[1052] Con tal configuración, el dispositivo de decodificación de datos tridimensionales que ha obtenido el flujo de bits puede determinar a partir de la información de identificación que se han realizado la cuantización utilizando el quinto parámetro de cuantización y la cuantización utilizando el sexto parámetro de cuantización, de modo que la carga de procesamiento del proceso de decodificación puede reducirse.
[1053] Por ejemplo, el dispositivo de codificación de datos tridimensionales además cuantiza una segunda luminancia utilizando un séptimo parámetro de cuantización y cuantiza una segunda crominancia utilizando un octavo parámetro de cuantización, indicando la segunda luminancia y la segunda crominancia un segundo color entre la información de atributos de cada uno de la pluralidad de puntos tridimensionales. En la generación descrita anteriormente, el flujo de bits generado incluye además la segunda luminancia cuantizada, la segunda crominancia cuantizada, el séptimo parámetro de cuantización y una cuarta diferencia entre el séptimo parámetro de cuantización y el octavo parámetro de cuantización.
[1054] Con tal configuración, dado que el octavo parámetro de cuantización se indica mediante la cuarta diferencia con respecto al séptimo parámetro de cuantización en el flujo de bits, la eficiencia de codificación puede mejorarse. Además, pueden incluirse dos tipos de información de color en la información de atributos de un punto tridimensional.
[1055] Por ejemplo, el dispositivo de codificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso descrito anteriormente utilizando la memoria.
[1056] El dispositivo de decodificación de datos tridimensionales de acuerdo con la presente realización realiza el proceso ilustrado en la FIG. 117. En primer lugar, el dispositivo de decodificación de datos tridimensionales obtiene información geométrica cuantizada, una primera luminancia cuantizada, una primera crominancia
cuantizada, un primer parámetro de cuantización, un segundo parámetro de cuantización y una primera diferencia entre el segundo parámetro de cuantización y un tercer parámetro de cuantización, obteniendo un flujo de bits (S5394). El dispositivo de decodificación de datos tridimensionales calcula información geométrica de una pluralidad de puntos tridimensionales mediante cuantización inversa de la información geométrica cuantizada utilizando la primera información de cuantización (S5395). De una primera luminancia y una primera crominancia que indican un primer color de la pluralidad de puntos tridimensionales, el dispositivo de decodificación de datos tridimensionales calcula la primera luminancia mediante cuantización inversa de la primera luminancia cuantizada utilizando el segundo parámetro de cuantización (S5396). El dispositivo de decodificación de datos tridimensionales calcula la primera crominancia mediante cuantización inversa de la primera crominancia cuantizada utilizando el tercer parámetro de cuantización obtenido a partir del segundo parámetro de cuantización y la primera diferencia (S5397).
[1057] De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar correctamente información geométrica e información de atributos de un punto tridimensional.
[1058] Por ejemplo, en la obtención, una reflectancia cuantizada y un cuarto parámetro de cuantización se obtienen además obteniendo el flujo de bits. El dispositivo de decodificación de datos tridimensionales además calcula una reflectancia de la pluralidad de puntos tridimensionales mediante cuantización inversa de la reflectancia cuantizada utilizando el cuarto parámetro de cuantización.
[1059] Por lo tanto, el dispositivo de decodificación de datos tridimensionales puede decodificar correctamente la reflectancia de un punto tridimensional.
[1060] Por ejemplo, en la obtención, una segunda diferencia entre el segundo parámetro de cuantización y un quinto parámetro de cuantización y una tercera diferencia entre el tercer parámetro de cuantización y un sexto parámetro de cuantización se obtienen además obteniendo el flujo de bits. En el cálculo de la primera luminancia, una primera luminancia de uno o más puntos tridimensionales se calcula mediante cuantización inversa de la primera luminancia cuantizada utilizando el segundo parámetro de cuantización y el quinto parámetro de cuantización obtenido a partir de la segunda diferencia, estando los uno o más puntos tridimensionales incluidos en cada subespacio obtenido dividiendo un espacio actual que incluye la pluralidad de puntos tridimensionales, siendo la primera luminancia cuantizada la luminancia obtenida cuantizando la primera luminancia de los uno o más puntos tridimensionales utilizando el segundo parámetro de cuantización y el quinto parámetro de cuantización. En el cálculo de la primera crominancia, una primera crominancia de los uno o más puntos tridimensionales se calcula mediante cuantización inversa de la primera crominancia cuantizada utilizando el tercer parámetro de cuantización y el sexto parámetro de cuantización obtenido a partir de la tercera diferencia, siendo la primera crominancia cuantizada la crominancia obtenida cuantizando la primera crominancia del al menos un punto tridimensional utilizando el tercer parámetro de cuantización y el sexto parámetro de cuantización.
[1061] Por ejemplo, en la obtención, información de identificación que indica que se han realizado la cuantización utilizando el quinto parámetro de cuantización y la cuantización utilizando el sexto parámetro de cuantización se obtiene además obteniendo el flujo de bits. En el cálculo de la primera luminancia, cuando la información de identificación indica que se han realizado la cuantización utilizando el quinto parámetro de cuantización y la cuantización utilizando el sexto parámetro de cuantización, se determina que la primera luminancia cuantizada es una luminancia obtenida cuantizando la primera luminancia de los uno o más puntos tridimensionales. En el cálculo de la primera crominancia, cuando la información de identificación indica que se han realizado la cuantización utilizando el quinto parámetro de cuantización y la cuantización utilizando el sexto parámetro de cuantización, se determina que la primera crominancia cuantizada es una crominancia obtenida cuantizando la primera crominancia de los uno o más puntos tridimensionales.
[1062] Con tal configuración, el dispositivo de decodificación de datos tridimensionales puede determinar a partir de la información de identificación que se han realizado la cuantización utilizando el quinto parámetro de cuantización y la cuantización utilizando el sexto parámetro de cuantización, de modo que la carga de procesamiento del proceso de decodificación puede reducirse.
[1063] Por ejemplo, en la obtención, una segunda luminancia cuantizada, una segunda crominancia cuantizada, un séptimo parámetro de cuantización y una cuarta diferencia entre el séptimo parámetro de cuantización y un octavo parámetro de cuantización se obtienen además obteniendo el flujo de bits. De una segunda luminancia y una segunda crominancia que indican un segundo color de la pluralidad de puntos tridimensionales, el dispositivo de decodificación de datos tridimensionales además calcula la segunda luminancia mediante cuantización inversa de la segunda luminancia cuantizada utilizando el séptimo parámetro de cuantización. El dispositivo de decodificación de datos tridimensionales además calcula la segunda crominancia mediante cuantización inversa de la segunda crominancia cuantizada utilizando el octavo parámetro de cuantización obtenido a partir del séptimo parámetro de cuantización y la cuarta diferencia.
[1064] De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar correctamente el segundo color de un punto tridimensional.
[1065] Por ejemplo, el dispositivo de decodificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso descrito anteriormente utilizando la memoria.
[1066] Realización 12
[1067] Con el método de codificación de datos tridimensionales, el método de decodificación de datos tridimensionales, el dispositivo de codificación de datos tridimensionales y el dispositivo de decodificación de datos tridimensionales descritos con respecto a la Realización 8, también son posibles los procesos de acuerdo con esta realización descritos a continuación.
[1068] La FIG. 118 es un diagrama para ilustrar un ejemplo de un método de transmisión de parámetros de cuantización de acuerdo con la presente realización. La parte (a) de la FIG.118 muestra un ejemplo en el que se establece un valor de referencia para el valor de QP para cada una de la información geométrica y la información de atributos. La FIG.118 difiere principalmente de la FIG.105 que muestra la Realización 8 en que se establece un valor de referencia para el valor de QP no solo para la información geométrica sino también para la información de atributos. Es decir, un valor de QP para al menos una de una pluralidad de piezas de información de atributos que incluyen un primer color, un segundo color y una reflectancia se designa como valor de referencia, y los valores de QP para otra información de atributos se indican como información de diferencia con respecto al valor de referencia común.
[1069] En la FIG.118, Q<Y1>, que es un valor de QP utilizado para la codificación de la luminancia Y1 del primer color, se establece como un valor de referencia común para una pluralidad de piezas de información de atributos que incluyen el primer color, el segundo color y la reflectancia. Q<Y2>, que es un valor de referencia para el segundo color, se deriva utilizando el valor de referencia común Q<Y1>y Δ(Q<Y2>, Q<Y1>), que es la información de diferencia “5.” con respecto a Q<Y1>. Q<R>, que es un valor de referencia para la reflectancia, se deriva utilizando el valor de referencia común Q<Y1>y Δ(Q<R>, Q<Y1>), que es la información de diferencia “8.” con respecto a Q<Y1>. En este caso, el valor de referencia común Q<Y1>se incluye en APS1, que es APS para el primer color.
[1070] Para un cuarto atributo, puede establecerse un valor de referencia diferente al valor de referencia común Q<Y1>. Un quinto atributo puede no tener valor de QP. Es decir, la información de atributos puede incluir tanto información de atributos que se cuantiza utilizando un valor de referencia común para derivar una pluralidad de valores de QP utilizados para la cuantización de una pluralidad de piezas de información de atributos, como información de atributos que se cuantiza utilizando un valor de referencia diferente al valor de referencia común. La información de atributos puede incluir además información de atributos que se codifica sin utilizar un valor de QP.
[1071] Debe observarse que, aunque se ha descrito con referencia a la FIG.118 un ejemplo en el que el valor de QP utilizado para la cuantización de la información de atributos del primer color es un valor de referencia común para derivar valores de QP utilizados para la cuantización de una pluralidad de piezas de información de atributos, el valor de referencia común puede determinarse de acuerdo con las reglas descritas a continuación. Por ejemplo, cuando toda la información de atributos se describe en información de control tal como SPS, el valor de QP incluido en la primera información de atributos indicada en SPS entre toda la información de atributos puede designarse como un valor de referencia común. Alternativamente, la información de control tal como SPS puede indicar información de atributos que debe cuantizarse utilizando un valor de QP designado como valor de referencia común. Alternativamente, en la información de control tal como SPS, la información de atributos que debe cuantizarse utilizando un valor de QP designado como valor de referencia común puede indicarse en primer lugar entre la pluralidad de piezas de información de atributos. En cualquier caso, al representar el valor de QP utilizado para la cuantización de cada una de la pluralidad de piezas de información de atributos como una combinación de un valor de referencia e información de diferencia, la cantidad de datos codificados puede reducirse.
[1072] Debe observarse que diferentes valores de referencia Q<Y1>, Q<Y2>y Q<R>para diferentes piezas de información de atributos pueden indicarse en APS, Q<Y1>puede utilizarse como un valor de referencia para el valor de QP para el primer color, Q<Y2>puede utilizarse como un valor de referencia para el valor de QP para el segundo color y Q<R>puede utilizarse como un valor de referencia para el valor de QP para la reflectancia. En ese caso, Q<Y2>y Q<R>se representan mediante un valor absoluto, al igual que Q<Y1>.
[1073] Un primer ejemplo es un método para indicar un valor de QP para una pluralidad de piezas de información de atributos cuando los metadatos para la pluralidad de piezas de información de atributos se describen colectivamente en un APS.
[1074] La FIG. 119 es un diagrama que muestra un primer ejemplo de una sintaxis de APS y una sintaxis de un encabezado de información de atributos.
[1075] En primer lugar, se describirá un ejemplo de sintaxis de APS.
[1076] aps_idx denota un número de índice de APS. aps_idx indica una correspondencia entre APS y un encabezado de información de atributos.
[1077] sps_idx denota un número de índice de SPS al que corresponde APS.
[1078] num_ofattribute denota el número de piezas de información de atributos. Debe observarse que, cuando se establece un APS para cada pieza de información de atributos, no es necesario incluir un campo o bucle de num_of_attribute en APS.
[1079] attribute_type denota el tipo de información de atributos o, en otras palabras, la clase de información de atributos. Debe observarse que, cuando el tipo de información de atributos se describe en el SPS correspondiente, puede incluirse en APS información que permita hacer referencia al tipo de información de atributos descrito en SPS en lugar de attribute_type.
[1080] En la FIG.119, la sentencia if encerrada por la línea discontinua 6701 indica un valor de QP dependiendo de attribute_type. Por ejemplo, cuando el tipo de información de atributos es color, el valor de QP para la luminancia (luma) representado mediante un valor absoluto se indica como un valor de referencia, y los valores de QP para la crominancia (chroma: Cb, Cr) se indican como información de diferencia con respecto al valor de QP para la luminancia.
[1081] Por otro lado, cuando el tipo de información de atributos es reflectancia, se indica el valor de QP para la reflectancia representado mediante un valor absoluto. Como otro ejemplo, cuando el tipo de información de atributos no tiene valor de QP, no se indica ningún valor de QP.
[1082] Cuando hay dos o más piezas de información de atributos, el valor de referencia (QP_value_Luma o QP_value en este ejemplo) para una pieza de información de atributos puede indicarse mediante la diferencia con respecto al valor de referencia para otra pieza de información de atributos. Por ejemplo, en el bucle de num_of_attribute, puede indicarse un valor de referencia para información de atributos común cuando i = 0, y puede indicarse un valor de diferencia con respecto a la información de atributos común cuando i => 1. data_QP_delta_present_flag es un indicador que indica si un valor de QP para cada pieza de datos (tajada) está presente en el encabezado de la información de atributos. Cuando el indicador es 1, un valor de QP para cada pieza de datos (tajada) se indica en el encabezado de la información de atributos.
[1083] A continuación, se describirá un ejemplo de sintaxis del encabezado de la información de atributos.
[1084] El encabezado de la información de atributos también incluye aps_idx. Por lo tanto, una correspondencia entre APS y el encabezado de la información de atributos se indica mediante APS y aps_idx incluidos en el encabezado de la información de atributos. Es decir, el hecho de que APS y el encabezado de la información de atributos compartan aps_idx indica que existe una correspondencia entre APS y el encabezado de la información de atributos.
[1085] attribute_type indica el tipo de información de atributos (clase de información de atributos). Debe observarse que, cuando el tipo de información de atributos se describe en el APS o SPS correspondiente, puede incluirse en el encabezado de la información de atributos, en lugar de attribute_type, información que permita hacer referencia al tipo de información de atributos descrito en APS o SPS.
[1086] Los valores de QP para los campos en la sentencia if encerrada por la línea discontinua 6702, específicamente, QP_delata_data_to_frame, QP_delta1_to_frame y QP_delta2_to_frame, son valores de QP para datos correspondientes a attribute_type. Cada valor de QP indica información de diferencia con respecto al valor descrito en APS.
[1087] Un segundo ejemplo es un método para indicar un valor de QP para información de atributos cuando los metadatos para una pieza de información de atributos se describen independientemente en un APS. En el segundo ejemplo, varios tipos (clases) de información de atributos tienen una estructura de encabezado común y, por lo tanto, puede evitarse ventajosamente un cambio de la estructura de sintaxis con la información de atributos.
[1088] La FIG.120 es un diagrama que muestra un segundo ejemplo de la sintaxis de APS. La FIG.121 es un diagrama que muestra un segundo ejemplo de la sintaxis del encabezado de información de atributos.
[1089] APS incluye un valor de referencia y un valor de diferencia para un valor de QP de una trama. Cuando data_QP_delta_present_flag de APS es 1, el encabezado de la información de atributos incluye información de diferencia con respecto al valor de referencia para APS.
[1090] Aquí, los campos relacionados con los valores de QP siempre están presentes, independientemente de si el tipo de información de atributos es color, reflectancia o número de trama, por ejemplo. APS tiene un primer número de campos para almacenar N valores de QP (N es 2 o mayor), independientemente del tipo de información de atributos. Aquí, N es 3, por ejemplo.
[1091] Cuando el tipo de información de atributos es color, por ejemplo, QP_value en APS almacena información que indica un valor de QP para luma, y QP_delta1 y QP_delta2 almacenan información que indica valores de QP
para chroma. Por ejemplo, QP_value es un valor de referencia, y QP_delta1 y QP_delta2 son información de diferencia con respecto a QP_value. Es decir, el valor de QP para luma se indica mediante QP_value, y los valores de QP para chroma se indican mediante un valor obtenido sumando QP_delta1 a QP_value y un valor obtenido sumando QP_delta2 a QP_value. De esta manera, APS incluye un valor de referencia para un parámetro de cuantización para cuantizar la información de atributos correspondiente.
[1092] De manera similar, QP_delta_data_to_frame en el encabezado de información de atributos almacena información de diferencia sobre el valor de QP para luma con respecto a QP_value en el APS correspondiente. QP_delta1_to_frame y QP_delta2_to_frame pueden almacenar información de diferencia sobre valores de QP para chroma con respecto a QP_delta1 y QP_delta2 en el APS correspondiente, respectivamente.
[1093] Cuando el tipo de información de atributos es reflectancia, por ejemplo, QP_value en APS puede almacenar información que indica un valor de QP para la reflectancia, y QP_delta1 y QP_delta2 pueden almacenar información que siempre indica 0 o invalidez. De manera similar, QP_delta_data_to_frame en el encabezado de información de atributos puede almacenar información que indica un valor de QP para la reflectancia, y QP_delta1_to_frame y QP_delta2_to_frame pueden almacenar información que siempre indica 0 o invalidez. En ese caso, el dispositivo de decodificación de datos tridimensionales no necesita utilizar para la decodificación y puede ignorar la información almacenada en QP_delta1 y QP_delta2 que almacenan información que indica 0 o invalidez y QP_delta1_to_frame y QP_delta2_to_frame, independientemente de la información.
[1094] Como otro ejemplo, cuando el tipo de información de atributos no tiene valor de QP, todos los campos en APS pueden almacenar información que indica 0 o invalidez. En ese caso, data_AP_delta_present_flag también se establece en 0. En ese caso, el dispositivo de decodificación de datos tridimensionales no necesita utilizar para la decodificación y puede ignorar la información almacenada en QP_delta1 y QP_delta2 que almacenan información que indica 0 o invalidez y QP_delta1_to_frame y QP_delta2_to_frame, independientemente de la información. De esta manera, el dispositivo de decodificación de datos tridimensionales puede ignorar un parámetro almacenado en un campo particular de una pluralidad de campos en un encabezado de información de atributos particular que corresponde a un tipo particular de atributo en los encabezados de una pluralidad de piezas de información de atributos.
[1095] Con tal configuración, los valores de QP para diferentes tipos de información de atributos pueden indicarse mediante combinaciones de un valor de referencia e información de diferencia en una estructura de sintaxis común, de modo que la eficiencia de codificación puede mejorarse.
[1096] Debe observarse que cuando la información de atributos correspondiente a una pieza de información geométrica incluye dos o más piezas de información de color, la manera de indicar la información de atributos puede cambiarse dependiendo del tipo de la información de atributos. Por ejemplo, la información de color puede indicarse mediante un valor de referencia de QP común e información de diferencia, y un valor de referencia de QP para reflectancia puede indicarse por separado en APS.
[1097] La presente invención no está limitada a los métodos descritos con respecto a la Realización 8 y la presente realización, y el valor de referencia puede señalizarse por separado de la información de diferencia, o la información de diferencia puede señalizarse independientemente como un valor de referencia. Por ejemplo, la combinación de un valor de referencia e información de diferencia puede cambiarse adaptativamente dependiendo de las propiedades de los datos. Por ejemplo, al menos un valor de referencia puede transmitirse para una unidad que necesita decodificarse independientemente, y la información de diferencia puede transmitirse para una unidad que no necesita decodificarse independientemente. De esta manera, la funcionalidad puede mejorarse y, al mismo tiempo, la cantidad de código puede reducirse.
[1098] Alternativamente, la cantidad de información puede calcularse para combinaciones de un valor de referencia e información de diferencia, y una combinación de un valor de referencia e información de diferencia que tenga la cantidad mínima de información puede generarse y entregarse basándose en el resultado del cálculo. Al cambiar adaptativamente la combinación de un valor de referencia e información de diferencia, el significado (semántica) del campo que indica el valor de referencia y el campo que indica la información de diferencia puede cambiarse adaptativamente. Por ejemplo, el significado de cada campo puede cambiarse, tal como determinando si cada campo se establece como inválido o no de acuerdo con las reglas descritas anteriormente, o puede añadirse un indicador que indique cambiar el significado de cada campo. Alternativamente, el destino de referencia para el valor de referencia puede cambiarse adaptativamente. En ese caso, puede indicarse un indicador que indique que el destino de referencia ha cambiado, o un Id o similar que permita identificar el destino de referencia.
[1099] A continuación, con referencia a la FIG.122, se describirá un método para indicar una relación entre información de atributos descrita en SPS, APS y Attribute_header (encabezado de información de atributos) utilizando attribute_component_id. La FIG. 122 es un diagrama que muestra una relación entre SPS, APS y un encabezado de información de atributos. Debe observarse que el destino de las flechas en la FIG.122 indica el destino de referencia.
[1100] SPS incluye información relativa a los tipos de una pluralidad de piezas de información de atributos. Es decir, SPS puede corresponder a una pluralidad de piezas de información de atributos e incluir una pluralidad de piezas de información attribute_type, cada una de las cuales indica un tipo diferente de información de atributos. SPS también incluye, para cada tipo de información de atributos, attribute_component_id que indica un número que permite identificar el tipo de información de atributos. Debe observarse que SPS es un ejemplo de información de control. attribute_type es un ejemplo de información de tipo. attribute_component_id incluido en SPS es un ejemplo de primera información de identificación que indica que una primera información de control de atributos está asociada con una de una pluralidad de piezas de información de tipo.
[1101] APS o Attribute_header incluye attribute_component_id que corresponde a attribute_component_id incluido en SPS. Debe observarse que APS es un ejemplo de segunda información de control de atributos. Attribute_header es un ejemplo de primera información de control de atributos. attribute_component_id incluido en APS es un ejemplo de segunda información de identificación que indica que una primera información de control de atributos está asociada con una de una pluralidad de piezas de información de tipo.
[1102] El dispositivo de decodificación de datos tridimensionales hace referencia a SPS indicado por sps_idx incluido en APS o Attribute_header. El dispositivo de decodificación de datos tridimensionales obtiene entonces el tipo de información de atributos correspondiente a attribute_component_id incluido en el APS o Attribute_header a partir del SPS referenciado como el tipo de información de atributos al que corresponde la información incluida en el APS o Attribute_header. Debe observarse que un APS corresponde a un tipo de información de atributos. El encabezado de una pieza de información de atributos corresponde a un tipo de información de atributos. Cada uno de una pluralidad de APS corresponde al/los encabezado(s) de una o más piezas de información de atributos. Es decir, un APS corresponde al/los encabezado(s) de una o más piezas de información de atributos distintos del/los encabezado(s) de una o más piezas de información de atributos que corresponden a otro APS. Cuando attribute_component_id = 0, por ejemplo, el dispositivo de decodificación de datos tridimensionales puede obtener información de atributos (tal como attribute_type) que corresponde a attribute_component_id que tiene el mismo valor, es decir, un valor de 0, a partir de SPS.
[1103] Debe observarse que, en lugar de attribute_component_id, la secuencia de las piezas de información de atributos descritas en SPS puede describirse en SPS. Es decir, la información de tipo que indica una pluralidad de tipos de información de atributos puede almacenarse (describirse) en SPS en una secuencia predeterminada. En ese caso, attribute_component_id incluido en APS o Attribute_header indica que el APS o Attribute_header que incluye attribute_component_id está asociado con información de tipo en una posición de la secuencia predeterminada.
[1104] Alternativamente, la secuencia de APS transmitidos o información de atributos puede hacerse coincidir con la secuencia de información de atributos descrita en SPS, permitiendo de ese modo que el dispositivo de decodificación de datos tridimensionales derive la secuencia de llegada de APS o información de atributos y haga referencia a información de atributos correspondiente a la secuencia de llegada. Cuando los datos de nube de puntos incluyen tanto información de atributos cuyo APS o Attribute_header puede estar presente o no dependiendo de la trama como información de atributos cuyo APS o Attribute_header siempre está presente independientemente de la trama, la información de atributos cuyo APS o Attribute_header siempre está presente independientemente de la trama puede transmitirse primero, y después puede transmitirse la información de atributos cuyo APS o Attribute_header puede estar presente o no dependiendo de la trama. Debe observarse que, aunque una pluralidad de APS, cada uno de los cuales corresponde a una pluralidad de piezas de información de atributos, se muestra en una trama en las FIGS.118 y 122, puede utilizarse un APS, en lugar de la pluralidad de APS. En ese caso, un APS incluye información relacionada con información de atributos que corresponde a una pluralidad de piezas de información de atributos.
[1105] aps_idx puede incluir un número de secuencia que corresponde a un número de trama. Una correspondencia entre APS y Attribute_header puede indicarse de esta manera. Debe observarse que aps_idx puede tener una función de attribute_component_id. Esto permite almacenar información sobre la secuencia completa relativa a uno o más tipos de APS o información de atributos en SPS y hacer referencia a ella desde cada APS o Attribute_header.
[1106] Debe observarse que, para permitir la determinación del tipo (attribute_type) de la información de atributos de APS o Attribute_header, attribute_type puede incluirse directamente en APS o Attribute_header, o puede incluirse en un encabezado de unidad NAL como un tipo de la unidad NAL.
[1107] En cualquier caso, puede obtenerse la información de atributos de APS o Attribute_header, y puede determinarse el tipo de atributo de la información de atributos.
[1108] Como se indicó anteriormente, el dispositivo de codificación de datos tridimensionales de acuerdo con la presente realización realiza el proceso mostrado por la FIG.123. En primer lugar, el dispositivo de codificación de datos tridimensionales codifica piezas de información de atributos de respectivos puntos tridimensionales utilizando parámetros (S6701). El dispositivo de codificación de datos tridimensionales genera un flujo de bits
que incluye las piezas de información de atributos codificadas, información de control y piezas de primera información de control de atributos (S6702). La información de control corresponde a las piezas de información de atributos e incluye piezas de información de tipo, cada una indicando un tipo de información de atributos diferente. Además, las piezas de primera información de control de atributos corresponden uno a uno con las piezas de información de atributos. Cada una de las piezas de primera información de control de atributos incluye primera información de identificación que indica que la primera información de control de atributos está asociada con una de las piezas de información de tipo.
[1109] Con tal configuración, dado que se genera un flujo de bits que incluye la primera información de identificación para identificar el tipo de la información de atributos a la que corresponde la primera información de control de atributos, el dispositivo de decodificación de datos tridimensionales que ha recibido el flujo de bits puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1110] Por ejemplo, las piezas de información de tipo se almacenan en la información de control en una secuencia predeterminada. La primera información de identificación indica que la primera información de control de atributos que incluye la primera información de identificación está asociada con una de las piezas de información de tipo que tiene un orden en la secuencia predeterminada.
[1111] Con tal configuración, dado que la información de tipo se indica en una secuencia predeterminada sin información que indique la información de tipo, la cantidad de datos del flujo de bits puede reducirse y la cantidad del flujo de bits transmitido puede reducirse.
[1112] Por ejemplo, el flujo de bits incluye además piezas de segunda información de control de atributos correspondientes a las piezas de información de atributos. Cada una de las piezas de segunda información de control de atributos incluye un valor de referencia de un parámetro utilizado para codificar una correspondiente de las piezas de información de atributos.
[1113] Con tal configuración, dado que cada una de una pluralidad de piezas de segunda información de control de atributos incluye un valor de referencia de un parámetro, la información de atributos a la que corresponde la segunda información de control de atributos puede codificarse utilizando el valor de referencia. Con tal configuración, dado que el dispositivo de decodificación de datos tridimensionales que ha recibido el flujo de bits puede identificar el tipo de la segunda información de atributos utilizando la segunda información de identificación, el dispositivo de decodificación de datos tridimensionales puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1114] Por ejemplo, cada una de las piezas de primera información de control de atributos incluye información de diferencia que es una diferencia con respecto al valor de referencia del parámetro. Con tal configuración, la eficiencia de codificación puede mejorarse.
[1115] Por ejemplo, el flujo de bits incluye además piezas de segunda información de control de atributos correspondientes a las piezas de información de atributos. Cada una de las piezas de segunda información de control de atributos incluye segunda información de identificación que indica que la segunda información de control de atributos está asociada con una de las piezas de información de tipo.
[1116] Con tal configuración, dado que se genera un flujo de bits que incluye la segunda información de identificación para identificar el tipo de la información de atributos a la que corresponde la segunda información de control de atributos, es posible generar el flujo de bits que puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1117] Por ejemplo, cada una de las piezas de primera información de control de atributos incluye N campos en los que se almacenan N parámetros, siendo N mayor o igual que 2. En una primera información de control de atributos específica entre las piezas de primera información de control de atributos, uno de los N campos incluye un valor que indica invalidez, correspondiendo la primera información de control de atributos específica a un tipo específico de un atributo.
[1118] Con tal configuración, dado que el dispositivo de decodificación de datos tridimensionales que ha recibido el flujo de bits puede identificar el tipo de la primera información de atributos utilizando la primera información de identificación y omitir el proceso de decodificación en el caso de una primera información de control de atributos específica, el dispositivo de decodificación de datos tridimensionales puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1119] Por ejemplo, en la codificación, las piezas de información de atributos se cuantizan utilizando parámetros de cuantización como los parámetros.
[1120] Con tal configuración, dado que un parámetro se expresa utilizando una diferencia con respecto a un valor de referencia, es posible mejorar la eficiencia de codificación para la cuantización.
[1121] Por ejemplo, el dispositivo de codificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso anterior utilizando la memoria.
[1122] El dispositivo de decodificación de datos tridimensionales de acuerdo con la presente realización realiza el proceso mostrado por la FIG.124. En primer lugar, el dispositivo de decodificación de datos tridimensionales obtiene piezas de información de atributos codificadas y parámetros a partir de un flujo de bits (S6711). El dispositivo de decodificación de datos tridimensionales decodifica las piezas de información de atributos codificadas utilizando los parámetros, para generar piezas de información de atributos de respectivos puntos tridimensionales (S6712). El flujo de bits incluye información de control y piezas de primera información de control de atributos. La información de control corresponde a las piezas de información de atributos e incluye piezas de información de tipo, cada una indicando un tipo de información de atributos diferente. Las piezas de primera información de control de atributos corresponden uno a uno con las piezas de información de atributos. Cada una de las piezas de primera información de control de atributos incluye primera información de identificación que indica que la primera información de control de atributos está asociada con una de las piezas de información de tipo.
[1123] Con tal configuración, dado que el dispositivo de decodificación de datos tridimensionales puede identificar el tipo de la información de atributos correspondiente a la primera información de control de atributos utilizando la primera información de identificación, el dispositivo de decodificación de datos tridimensionales puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1124] Por ejemplo, las piezas de información de tipo se almacenan en la información de control en una secuencia predeterminada. La primera información de identificación indica que la primera información de control de atributos que incluye la primera información de identificación está asociada con una de las piezas de información de tipo que tiene un orden en la secuencia predeterminada.
[1125] Con tal configuración, dado que la información de tipo se indica en una secuencia predeterminada sin información que indique la información de tipo, la cantidad de datos del flujo de bits puede reducirse y la cantidad del flujo de bits transmitido puede reducirse.
[1126] Por ejemplo, el flujo de bits incluye además piezas de segunda información de control de atributos correspondientes a las piezas de información de atributos. Cada una de las piezas de segunda información de control de atributos incluye un valor de referencia de un parámetro utilizado para codificar una correspondiente de las piezas de información de atributos.
[1127] Con tal configuración, dado que el dispositivo de decodificación de datos tridimensionales puede decodificar la información de atributos correspondiente a la segunda información de control de atributos utilizando un valor de referencia, el dispositivo de decodificación de datos tridimensionales puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1128] Por ejemplo, cada una de las piezas de primera información de control de atributos incluye información de diferencia que es una diferencia con respecto al valor de referencia del parámetro. Con tal configuración, dado que es posible decodificar información de atributos utilizando un valor de referencia e información de diferencia, es posible decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1129] Por ejemplo, el flujo de bits incluye además piezas de segunda información de control de atributos correspondientes a las piezas de información de atributos. Cada una de las piezas de segunda información de control de atributos incluye segunda información de identificación que indica que la segunda información de control de atributos está asociada con una de las piezas de información de tipo. Con tal configuración, dado que es posible identificar el tipo de la información de atributos correspondiente a la segunda información de control de atributos utilizando la segunda información de identificación, es posible decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1130] Cada una de las piezas de primera información de control de atributos incluye campos en los que se almacenan parámetros. En la decodificación, se ignora un parámetro almacenado en un campo específico entre los campos de una primera información de control de atributos específica entre las piezas de primera información de control de atributos, correspondiendo la primera información de control de atributos específica a un tipo específico de un atributo.
[1131] Con tal configuración, dado que el dispositivo de decodificación de datos tridimensionales puede identificar el tipo de la primera información de atributos utilizando la primera información de identificación, el dispositivo de decodificación de datos tridimensionales puede decodificar correcta y eficientemente información de atributos de un punto tridimensional.
[1132] Por ejemplo, en la decodificación, las piezas de información de atributos codificadas se cuantizan inversamente utilizando parámetros de cuantización como los parámetros.
[1133] Con tal configuración, es posible decodificar correctamente información de atributos de un punto tridimensional.
[1134] Por ejemplo, el dispositivo de decodificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso anterior utilizando la memoria.
[1135] Realización 13
[1136] Para lograr una alta compresión, la información de atributos incluida en datos de Compresión de Nube de Puntos (PCC) se transforma mediante una pluralidad de métodos, tales como Transformación Jerárquica Adaptativa por Regiones Basada en Elevación (RAHT) y otros métodos de transformación. Aquí, Elevación es uno de los métodos de transformación que utilizan Nivel de Detalle (LoD).
[1137] La información de señal importante tiende a estar incluida en un componente de baja frecuencia y, por lo tanto, la cantidad de código se reduce cuantizando un componente de alta frecuencia. Es decir, el proceso de transformación tiene fuertes características de compresión de energía. Además, la precisión se reduce mediante la cuantización de acuerdo con la magnitud del parámetro de cuantización.
[1138] La FIG.125 es un diagrama de bloques que muestra una configuración de un dispositivo de codificación de datos tridimensionales de acuerdo con esta realización. El dispositivo de codificación de datos tridimensionales incluye sustractor 7001, transformador 7002, retenedor de matriz de transformación 7003, cuantizador 7004, controlador de cuantización 7005 y codificador de entropía 7006.
[1139] El sustractor 7001 calcula un valor de coeficiente que es la diferencia entre datos de entrada y datos de referencia. Por ejemplo, los datos de entrada son información de atributos incluida en datos de nube de puntos y los datos de referencia son un valor predicho de la información de atributos.
[1140] El transformador 7002 realiza un proceso de transformación sobre el valor de coeficiente. Por ejemplo, el proceso de transformación es un proceso de clasificación de una pluralidad de piezas de información de atributos en LoD. Debe observarse que el proceso de transformación puede ser una transformación de Haar o similar. El retenedor de matriz de transformación 7003 mantiene una matriz de transformación utilizada para el proceso de transformación realizado por el transformador 7002. Por ejemplo, la matriz de transformación es una matriz de transformación de Haar. Debe observarse que, aunque aquí se muestra un ejemplo en el que el dispositivo de codificación de datos tridimensionales tiene tanto una función de realizar un proceso de transformación utilizando LoD como una función de realizar un proceso de transformación tal como una transformación de Haar, el dispositivo de codificación de datos tridimensionales puede tener solo cualquiera de las funciones. Alternativamente, el dispositivo de codificación de datos tridimensionales puede utilizar selectivamente cualquiera de estos dos tipos de procesos de transformación. Alternativamente, el dispositivo de codificación de datos tridimensionales puede cambiar el proceso de transformación que se utilizará para cada unidad de procesamiento predeterminada.
[1141] El cuantizador 7004 cuantiza el valor de coeficiente para generar un valor cuantizado. El controlador de cuantización 7005 controla un parámetro de cuantización utilizado para la cuantización por el cuantizador 7004. Por ejemplo, el controlador de cuantización 7005 puede cambiar el parámetro de cuantización (o etapa de cuantización) de acuerdo con la estructura jerárquica para la codificación. De esta manera, puede seleccionarse un parámetro de cuantización apropiado para cada capa de la estructura jerárquica, de modo que pueda controlarse la cantidad de códigos que se produce en cada capa. El controlador de cuantización 7005 también establece parámetros de cuantización para una cierta capa y las capas inferiores a la cierta capa que incluyen un componente de frecuencia que tiene un pequeño efecto en la calidad de imagen subjetiva en un valor máximo, y establece coeficientes de cuantización para la cierta capa y las capas inferiores a la cierta capa en 0, por ejemplo. De esta manera, la cantidad de código que se produce puede reducirse mientras se reduce el deterioro de la calidad de imagen subjetiva. El controlador de cuantización 7005 también puede controlar finamente la calidad de imagen subjetiva y la cantidad de código que se produce. La “capa” en el presente documento se refiere a una capa (a una profundidad en una estructura de árbol) en LoD o RAHT (transformación de Haar).
[1142] El codificador de entropía 7006 codifica por entropía (codifica aritméticamente, por ejemplo) el coeficiente de cuantización para generar un flujo de bits. El codificador de entropía 7006 también codifica el parámetro de cuantización para cada capa establecido por el controlador de cuantización 7005.
[1143] La FIG.126 es un diagrama de bloques que muestra una configuración de un dispositivo de decodificación de datos tridimensionales de acuerdo con esta realización. El dispositivo de decodificación de datos tridimensionales incluye un decodificador de entropía 7011, un cuantizador inverso 7012, un controlador de cuantización 7013, un transformador inverso 7014, un retenedor de matriz de transformación 7015 y un sumador 7016.
[1144] El decodificador de entropía 7011 decodifica el coeficiente de cuantización y el parámetro de cuantización para cada capa a partir del flujo de bits. El cuantizador inverso 7012 cuantiza inversamente el coeficiente de cuantización para generar el valor de coeficiente. El controlador de cuantización 7013 controla el parámetro de cuantización utilizado para la cuantización inversa por el cuantizador inverso 7012 basándose en el parámetro de cuantización para cada capa obtenido en el decodificador de entropía 7011.
[1145] El transformador inverso 7014 transforma inversamente el valor de coeficiente. Por ejemplo, el transformador inverso 7014 realiza una transformación de Haar inversa sobre el valor de coeficiente. El retenedor de matriz de transformación 7015 mantiene una matriz de transformación utilizada para el proceso de transformación inversa por el transformador inverso 7014. Por ejemplo, la matriz de transformación es una matriz de transformación de Haar inversa.
[1146] El sumador 7016 añade los datos de referencia al valor de coeficiente para generar datos de salida. Por ejemplo, los datos de salida son información de atributos incluida en datos de nube de puntos, y los datos de referencia son un valor predicho de la información de atributos.
[1147] A continuación, se describirá el establecimiento de un parámetro de cuantización para cada capa. En la codificación de información de atributos, tal como Predicción/Elevación, se utiliza un parámetro de cuantización diferente para cada capa LoD. Por ejemplo, los parámetros de cuantización para capas inferiores se establecen para que sean más pequeños para aumentar la precisión para las capas inferiores. De esta manera, la precisión de predicción para capas superiores puede mejorarse. Los parámetros de cuantización para capas superiores pueden establecerse para que sean mayores, reduciendo de ese modo la cantidad de datos. De esta manera, puede establecerse por separado un valor de árbol de cuantización (Qt) para cada LoD, de acuerdo con el plan de uso del usuario. Aquí, el valor de árbol de cuantización es el parámetro de cuantización, por ejemplo. La FIG.127 es un diagrama que muestra un ejemplo del establecimiento de los LoD. Como se muestra en la FIG.127, por ejemplo, Qt0 a Qt2 independientes se establecen para LoD0 a LoD2.
[1148] En la codificación de la información de atributos utilizando RAHT, se utilizan diferentes parámetros de cuantización de acuerdo con la profundidad en la estructura de árbol. Por ejemplo, los parámetros de cuantización para capas inferiores se establecen para que sean más pequeños para aumentar la precisión para las capas inferiores. De esta manera, la precisión de predicción para capas superiores puede mejorarse. Los parámetros de cuantización para capas superiores pueden establecerse para que sean mayores, reduciendo de ese modo la cantidad de datos. De esta manera, puede establecerse por separado un valor de árbol de cuantización (Qt) para cada profundidad en la estructura de árbol, de acuerdo con el plan de uso del usuario. La FIG. 128 es un diagrama que muestra un ejemplo de una estructura jerárquica (estructura de árbol) de RAHT. Como se muestra en la FIG. 128, por ejemplo, Qt0 a Qt2 independientes se establecen para profundidades en la estructura de árbol.
[1149] A continuación, se describirá una configuración de un dispositivo de codificación de datos tridimensionales de acuerdo con esta realización. La FIG. 129 es un diagrama de bloques que muestra una configuración del dispositivo de codificación de datos tridimensionales 7020 de acuerdo con esta realización. El dispositivo de codificación de datos tridimensionales 7020 codifica datos de nube de puntos (nube de puntos) para generar datos codificados (flujo codificado). El dispositivo de codificación de datos tridimensionales 7020 incluye un divisor 7021, una pluralidad de codificadores de información geométrica 7022, una pluralidad de codificadores de información de atributos 7023, un codificador de información adicional 7024 y un multiplexor 7025.
[1150] El divisor 7021 genera una pluralidad de piezas de datos divisionales dividiendo datos de nube de puntos. Específicamente, el divisor 7021 genera una pluralidad de piezas de datos divisionales dividiendo un espacio de datos de nube de puntos en una pluralidad de subespacios. Aquí, un subespacio es una combinación de mosaicos o tajadas o una combinación de mosaicos y tajadas. Más específicamente, los datos de nube de puntos incluyen información geométrica, información de atributos (tal como color o reflectancia) e información adicional. El divisor 7021 divide la información geométrica en una pluralidad de piezas de información geométrica divisional, y divide la información de atributos en una pluralidad de piezas de información de atributos divisional. El divisor 7021 también genera información adicional relativa a la división.
[1151] El divisor 7021 primero divide una nube de puntos en mosaicos, por ejemplo. El divisor 7021 luego divide adicionalmente los mosaicos resultantes en tajadas.
[1152] La pluralidad de codificadores de información geométrica 7022 genera una pluralidad de piezas de información geométrica codificada codificando una pluralidad de piezas de información geométrica divisional. Por ejemplo, los codificadores de información geométrica 7022 codifican información geométrica divisional utilizando una estructura de árbol N-ario, tal como un octree. Específicamente, en el caso de un octree, un espacio actual se divide en ocho nodos (subespacios), y se genera información de 8 bits (código de ocupación) que indica si cada nodo incluye o no una nube de puntos. Un nodo que incluye una nube de puntos se divide adicionalmente en ocho nodos, y se genera información de 8 bits que indica si cada uno de los ocho nodos incluye o no una nube de puntos. Este proceso se repite hasta que se alcanza una capa predeterminada o el número de las nubes de puntos incluidas en cada nodo llega a ser igual o menor que un umbral. Por ejemplo, la pluralidad de codificadores de información geométrica 7022 procesa una pluralidad de piezas de información geométrica divisional en paralelo.
[1153] El codificador de información de atributos 7023 genera información de atributos codificada, que son datos codificados, codificando información de atributos utilizando información de configuración generada por el
codificador de información geométrica 7022. Por ejemplo, el codificador de información de atributos 7023 determina un punto de referencia (nodo de referencia) al que se hará referencia al codificar un punto actual (nodo actual) que va a procesarse basándose en la estructura de octree generada por el codificador de información geométrica 7022. Por ejemplo, el codificador de información de atributos 7023 hace referencia a un nodo cuyo nodo padre en el octree es el mismo que el nodo padre del nodo actual, entre nodos periféricos o nodos vecinos. Debe observarse que el método de determinación de una relación de referencia no está limitado a este método.
[1154] El proceso de codificación de información geométrica o información de atributos puede incluir al menos uno de un proceso de cuantización, un proceso de predicción y un proceso de codificación aritmética. En este caso, “hacer referencia a” significa utilizar un nodo de referencia para el cálculo de un valor predicho de información de atributos o utilizar un estado de un nodo de referencia (información de ocupación que indica si un nodo de referencia incluye o no una nube de puntos, por ejemplo) para la determinación de un parámetro de codificación. Por ejemplo, el parámetro de codificación es un parámetro de cuantización en el proceso de cuantización o un contexto o similar en la codificación aritmética.
[1155] El codificador de información adicional 7024 genera información adicional codificada codificando la información adicional incluida en los datos de nube de puntos y la información adicional relativa a la división de datos generada en la división por el divisor 7021.
[1156] El multiplexor 7025 genera flujo codificado (flujo codificado) multiplexando la pluralidad de piezas de información geométrica codificada, la pluralidad de piezas de información de atributos codificada y la información adicional codificada, y transmite los datos codificados generados. La información adicional codificada se utiliza en la decodificación.
[1157] La FIG.130 es un diagrama de bloques del divisor 7021. El divisor 7021 incluye un divisor de mosaicos 7031 y un divisor de tajadas 7032.
[1158] El divisor de mosaicos 7031 genera una pluralidad de piezas de información geométrica de mosaico dividiendo información geométrica (posición (geometría)) en mosaicos. El divisor de mosaicos 7031 genera una pluralidad de piezas de información de atributos de mosaico dividiendo información de atributos (atributo) en mosaicos. El divisor de mosaicos 7031 también emite información adicional de mosaico (Metadatos de Mosaico) que incluye información relativa a la división de mosaicos e información generada en la división de mosaicos. El divisor de tajadas 7032 genera una pluralidad de piezas de información geométrica divisional (una pluralidad de piezas de información geométrica de tajada) dividiendo una pluralidad de piezas de información geométrica de mosaico en tajadas. El divisor de tajadas 7032 genera una pluralidad de piezas de información de atributos divisional (una pluralidad de piezas de información de atributos de tajada) dividiendo una pluralidad de piezas de información de atributos de mosaico en tajadas. El divisor de tajadas 7032 también emite información adicional de tajada (Metadatos de Tajada) que incluye información relativa a la división de tajadas e información generada en la división de tajadas.
[1159] El divisor de mosaicos 7031 y el divisor de tajadas 7032 también determinan un valor de árbol de cuantización (parámetro de cuantización) basándose en la información adicional generada.
[1160] La FIG. 131 es un diagrama de bloques del codificador de información de atributos 7023. El codificador de información de atributos 7023 incluye un transformador 7035, un cuantizador 7036 y un codificador de entropía 7037.
[1161] El transformador 7035 clasifica la información de atributos divisional en capas, tales como los LoD, y genera un valor de coeficiente (valor de diferencia) calculando la diferencia entre la información de atributos divisional y el valor predicho. Debe observarse que el transformador 7035 puede generar el valor de coeficiente realizando la transformación de Haar sobre la información de atributos divisional.
[1162] El cuantizador 7036 genera un valor cuantizado cuantizando el valor de coeficiente. Específicamente, el cuantizador 7036 divide el coeficiente por una etapa de cuantización basada en el parámetro de cuantización. El codificador de entropía 7037 genera información de atributos codificada codificando por entropía el valor cuantizado.
[1163] A continuación, se describirá una configuración de un dispositivo de decodificación de datos tridimensionales de acuerdo con esta realización. La FIG.132 es un diagrama de bloques que muestra una configuración del dispositivo de decodificación de datos tridimensionales 7040. El dispositivo de decodificación de datos tridimensionales 7040 reproduce datos de nube de puntos decodificando datos codificados (flujo codificado) generados codificando los datos de nube de puntos. El dispositivo de decodificación de datos tridimensionales 7040 incluye un demultiplexor 7041, una pluralidad de decodificadores de información geométrica 7042, una pluralidad de decodificadores de información de atributos 7043, un decodificador de información adicional 7044 y un combinador 7045.
[1164] El demultiplexor 7041 genera una pluralidad de piezas de información geométrica codificada, una pluralidad de piezas de información de atributos codificada e información adicional codificada demultiplexando datos codificados (flujo codificado).
[1165] La pluralidad de decodificadores de información geométrica 7042 genera una pluralidad de piezas de información geométrica divisional decodificando una pluralidad de piezas de información geométrica codificada. Por ejemplo, la pluralidad de decodificadores de información geométrica 7042 procesa una pluralidad de piezas de información geométrica codificada en paralelo.
[1166] La pluralidad de decodificadores de información de atributos 7043 genera una pluralidad de piezas de información de atributos divisional decodificando una pluralidad de piezas de información de atributos codificada. Por ejemplo, la pluralidad de decodificadores de información de atributos 7043 procesa una pluralidad de piezas de información de atributos codificada en paralelo.
[1167] Una pluralidad de decodificadores de información adicional 7044 genera información adicional decodificando información adicional codificada.
[1168] El combinador 7045 genera información geométrica combinando una pluralidad de piezas de información geométrica divisional utilizando información adicional. El combinador 7045 genera información de atributos combinando una pluralidad de piezas de información de atributos divisional utilizando información adicional. La FIG.133 es un diagrama de bloques del decodificador de información de atributos 7043. El decodificador de información de atributos 7043 incluye un decodificador de entropía 7051, un cuantizador inverso 7052 y un transformador inverso 7053. El decodificador de entropía 7051 genera un valor cuantizado decodificando por entropía información de atributos codificada. El cuantizador inverso 7052 genera un valor de coeficiente cuantizando inversamente el valor cuantizado. Específicamente, el cuantizador inverso 7052 multiplica el valor de coeficiente por una etapa de cuantización basada en el valor de árbol de cuantización (parámetro de cuantización) obtenido a partir del flujo de bits. El transformador inverso 7053 genera información de atributos divisional transformando inversamente el valor de coeficiente. Aquí, la transformación inversa es un proceso de añadir el valor predicho al valor de coeficiente, por ejemplo. Alternativamente, la transformación inversa es la transformación de Haar inversa.
[1169] A continuación, se describirá un ejemplo de un método de determinación de un parámetro de cuantización. La FIG.134 es un diagrama que muestra un ejemplo del establecimiento de un parámetro de cuantización en la división de mosaicos y la división de tajadas.
[1170] Cuando el valor del parámetro de cuantización es pequeño, es probable que se mantenga la información original. Por ejemplo, un valor por defecto del parámetro de cuantización es 1. Por ejemplo, en el proceso de codificación utilizando mosaicos de datos PCC, un parámetro de cuantización para un mosaico de una vía principal se establece para que sea un valor pequeño, con el fin de mantener la calidad de los datos. Por otro lado, un parámetro de cuantización para un mosaico de un área periférica se establece para que sea un valor grande. De esta manera, la eficiencia de codificación puede mejorarse, mientras que disminuye la calidad de datos del área periférica.
[1171] De manera similar, en el proceso de codificación utilizando tajadas de datos PCC, una acera, un árbol y un edificio son importantes en la estimación de posición propia y mapeado, y un parámetro de cuantización para una tajada de una acera, un árbol o un edificio se establece para que sea un valor pequeño. Por otro lado, un cuerpo móvil u otros objetos son menos importantes, de modo que un parámetro de cuantización para una tajada de un cuerpo móvil u otros objetos se establece para que sea un valor grande.
[1172] Cuando se utiliza ΔQP (DeltaQP) descrito posteriormente, en la codificación de un punto tridimensional que pertenece a un área importante, tal como una vía principal, el dispositivo de codificación de datos tridimensionales puede realizar la codificación estableciendo el valor de ΔQP para que sea un valor negativo para reducir el error de cuantización, con el fin de disminuir el parámetro de cuantización. De esta manera, el valor de atributo decodificado del punto tridimensional que pertenece al área importante puede acercarse al valor anterior a la codificación. En la codificación de un punto tridimensional que pertenece a un área que no es importante, tal como un área periférica, el dispositivo de codificación de datos tridimensionales puede establecer el valor de ΔQP para que sea un valor positivo para reducir la cantidad de información, con el fin de aumentar el parámetro de cuantización. De esta manera, la cantidad total de código puede reducirse, mientras se mantiene la cantidad de información sobre el área importante.
[1173] A continuación, se describirá un ejemplo de información que indica un parámetro de cuantización para cada capa. En la codificación de información de atributos de un punto tridimensional mediante cuantización, se introduce un esquema para controlar parámetros de cuantización sobre una base de unidad más fina además del parámetro de cuantización QPbase para una trama, una tajada, un mosaico o similar. Por ejemplo, cuando se codifica información de atributos utilizando los LoD, el dispositivo de codificación de datos tridimensionales realiza la codificación cambiando el valor del parámetro de cuantización para cada LoD proporcionando Delta_Layer para cada LoD y añadiendo Delta_Layer al valor de QPbase para cada LoD. El dispositivo de
codificación de datos tridimensionales también añade Delta_Layer utilizado para la codificación a un encabezado o similar del flujo de bits. De esta manera, el dispositivo de codificación de datos tridimensionales puede codificar información de atributos de un punto tridimensional cambiando el parámetro de cuantización para cada LoD de acuerdo con una cantidad de código deseada y una cantidad de código real, por ejemplo, y por lo tanto puede generar finalmente un flujo de bits que tenga una cantidad de código cercana a la cantidad de código deseada. El dispositivo de decodificación de datos tridimensionales puede decodificar adecuadamente el flujo de bits decodificando QPbase y Delta_Layer incluidos en el encabezado para generar los parámetros de cuantización utilizados por el dispositivo de codificación de datos tridimensionales.
[1174] La FIG.135 es un diagrama que muestra un ejemplo en el que la información de atributos de todos los puntos tridimensionales se codifica utilizando el parámetro de cuantización QPbase. La FIG.136 es un diagrama que muestra un ejemplo en el que se realiza codificación cambiando el parámetro de cuantización para cada capa LoD. En el ejemplo mostrado en la FIG. 136, el parámetro de cuantización para el LoD inicial se calcula añadiendo Delta_Layer del LoD inicial a QPbase. Para los LoD segundo y siguientes, el parámetro de cuantización para el LoD que se está procesando se calcula añadiendo Delta_Layer del LoD que se está procesando al parámetro de cuantización para el LoD inmediatamente anterior. Por ejemplo, el parámetro de cuantización QP3 de al comienzo de LoD3 se calcula de acuerdo con QP3 = QP2 Delta_Layer[3].
[1175] Debe observarse que Delta_Layer[i] para cada LoD puede indicar el valor de diferencia con respecto a QPbase. Es decir, el parámetro de cuantización QPi del i-ésimo LoDi se indica mediante QPi = QPbase Delta_Layer[i]. Por ejemplo, QP1 = QPbase Delta_Layer[1], y QP2 = QPbase Delta_Layer[2].
[1176] La FIG.137 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos). Aquí, el encabezado de información de atributos es un encabezado sobre una base de trama, tajada o mosaico, por ejemplo, y es un encabezado de información de atributos. Como se muestra en la FIG. 137, el encabezado de información de atributos incluye QPbase (parámetro de cuantización de referencia), NumLayer (número de capas) y Delta_Layer[i] (parámetro de cuantización diferencial).
[1177] QPbase indica el valor de un parámetro de cuantización de referencia para una trama, una tajada, un mosaico o similar. NumLayer indica el número de capas de LoD o RAHT. En otras palabras, NumLayer indica el número de todos los Delta_Layer[i] incluidos en el encabezado de información de atributos.
[1178] Delta_Layer[i] indica el valor de ΔQP para la capa i. Aquí, ΔQP es un valor obtenido restando el parámetro de cuantización para la capa i del parámetro de cuantización para la capa i-1. Debe observarse que ΔQP puede ser un valor obtenido restando el parámetro de cuantización para la capa i de QPbase. ΔQP puede asumir un valor positivo o negativo. Debe observarse que no es necesario añadir Delta_Layer[0] al encabezado. En ese caso, el parámetro de cuantización para la capa 0 es igual a QPbase. De esta manera, la cantidad de código del encabezado puede reducirse.
[1179] La FIG.138 es un diagrama que muestra otro ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos). El encabezado de información de atributos mostrado en la FIG.138 difiere del encabezado de información de atributos mostrado en la FIG. 137 en que el encabezado de información de atributos incluye además delta_Layer_present_flag.
[1180] delta_Layer_present_flag es un indicador que indica si Delta_Layer está incluido o no en el flujo de bits. Por ejemplo, un valor de 1 indica que Delta_Layer está incluido en el flujo de bits, y un valor de 0 indica que Delta_Layer no está incluido en el flujo de bits. Cuando delta_Layer_present_flag es 0, el dispositivo de decodificación de datos tridimensionales realiza el siguiente proceso de decodificación estableciendo Delta_Layer para que sea 0, por ejemplo.
[1181] Debe observarse que aunque aquí se han descrito ejemplos en los que el parámetro de cuantización se indica mediante QPbase y Delta_Layer, una etapa de cuantización puede indicarse mediante QPbase y Delta_Layer. La etapa de cuantización se calcula a partir del parámetro de cuantización utilizando una fórmula, una tabla o similar determinada de antemano. En el proceso de cuantización, el dispositivo de codificación de datos tridimensionales divide el valor de coeficiente por la etapa de cuantización. En el proceso de cuantización inversa, el dispositivo de decodificación de datos tridimensionales reproduce el valor de coeficiente multiplicando el valor cuantizado por la etapa de cuantización.
[1182] A continuación, se describirá un ejemplo en el que los parámetros de cuantización se controlan sobre una base de unidad más fina. La FIG. 139 es un diagrama que muestra un ejemplo en el que los parámetros de cuantización se controlan sobre una base de una unidad más fina que LoD.
[1183] Por ejemplo, cuando se codifica información de atributos utilizando LoD, el dispositivo de codificación de datos tridimensionales define ADelta_QP y NumPointADelta, que representa la información geométrica sobre un punto tridimensional al que va a añadirse ADelta_QP, además de Delta_Layer para cada capa LoD. El dispositivo de codificación de datos tridimensionales realiza la codificación cambiando el valor del parámetro de cuantización basándose en Delta_Layer, ADelta_QP y NumPointADelta.
[1184] El dispositivo de codificación de datos tridimensionales puede añadir ADelta y NumPointADelta utilizados para la codificación al encabezado o similar del flujo de bits. Esto permite que el dispositivo de codificación de datos tridimensionales codifique información de atributos sobre una pluralidad de puntos tridimensionales cambiando el parámetro de cuantización para cada punto tridimensional de acuerdo con la cantidad de código deseada y la cantidad de código real, por ejemplo. De esta manera, el dispositivo de codificación de datos tridimensionales puede generar finalmente un flujo de bits que tenga una cantidad de código cercana a la cantidad de código deseada. El dispositivo de decodificación de datos tridimensionales puede decodificar apropiadamente el flujo de bits decodificando QPbase, Delta_Layer y ADelta incluidos en el encabezado para generar los parámetros de cuantización utilizados por el dispositivo de codificación de datos tridimensionales.
[1185] Por ejemplo, como se muestra en la FIG.139, el valor cuantizado QP4 de la información de atributos N0-ésima se calcula de acuerdo con QP4 = QP3 ADelta_QP[0].
[1186] También puede utilizarse un orden de codificación/decodificación inverso al orden de codificación/decodificación mostrado en la FIG.139. Por ejemplo, la codificación/decodificación también puede realizarse en el orden de LoD3, LoD2, LoD1 y luego LoD0.
[1187] La FIG.140 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos) en el caso en que se utiliza el ejemplo mostrado en la FIG.139. El encabezado de información de atributos mostrado en la FIG. 140 difiere del encabezado de información de atributos mostrado en la FIG. 137 en que el encabezado de información de atributos incluye además NumADelta, NumPointADelta[i] y ADelta_QP[i].
[1188] NumADelta indica el número de todos los ADelta_QP incluidos en el flujo de bits. NumPointADelta[i] indica un número de identificación del punto tridimensional A al que se aplica ADelta_QP[i]. Por ejemplo, NumPointADelta[i] indica el número de los puntos tridimensionales desde el punto tridimensional inicial hasta el punto tridimensional A en el orden de codificación/decodificación. NumPointADelta[i] también puede indicar el número de los puntos tridimensionales desde el primer punto tridimensional hasta el punto tridimensional A en el LoD al que pertenece el punto tridimensional A.
[1189] Alternativamente, NumPointADelta[i] puede indicar el valor de diferencia entre el número de identificación del punto tridimensional indicado por NumPointADelta[i-1] y el número de identificación del punto tridimensional A. De esta manera, el valor de NumPointADelta[i] puede reducirse, de modo que la cantidad de código puede reducirse.
[1190] ADelta_QP[i] indica el valor de ΔQP del punto tridimensional indicado por NumPointADelta[i]. Es decir, ADelta_QP[i] indica la diferencia entre el parámetro de cuantización del punto tridimensional indicado por NumPointADelta[i] y el parámetro de cuantización del punto tridimensional inmediatamente anterior a ese punto tridimensional.
[1191] La FIG.141 es un diagrama que muestra otro ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos) en el caso en que se utiliza el ejemplo mostrado en la FIG.139. El encabezado de información de atributos mostrado en la FIG. 141 difiere del encabezado de información de atributos mostrado en la FIG. 140 en que el encabezado de información de atributos incluye además delta_Layer_present_flag y additional_delta_QP_present_flag e incluye NumADelta_minus1 en lugar de NumADelta.
[1192] delta_Layer_present_flag es igual al ya descrito con referencia a la FIG.138. additional_delta_QP_present_flag es un indicador que indica si ADelta_QP está incluido o no en el flujo de bits. Por ejemplo, un valor de 1 indica que ADelta_QP está incluido en el flujo de bits, y un valor de 0 indica que ADelta_QP no está incluido en el flujo de bits. Cuando additional_delta_QP_present_flag es 0, el dispositivo de decodificación de datos tridimensionales realiza el siguiente proceso de decodificación estableciendo ADelta_QP para que sea 0, por ejemplo.
[1193] NumADelta_minus1 indica el número de todos los ADelta_QP incluidos en el flujo de bits menos 1. De esta manera, añadiendo al encabezado el valor obtenido restando 1 del número de ADelta_QP, la cantidad de código del encabezado puede reducirse. Por ejemplo, el dispositivo de decodificación de datos tridimensionales calcula NumADelta = NumADelta_minus1 1. ADelta_QP[i] indica el valor del i-ésimo ADelta_QP. Debe observarse que ADelta_QP[i] puede establecerse no solo para que sea un valor positivo sino también un valor negativo. La FIG.142 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con esta realización. En primer lugar, el dispositivo de codificación de datos tridimensionales codifica información geométrica (geometría) (S7001). Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza la codificación utilizando una representación de octree.
[1194] El dispositivo de codificación de datos tridimensionales luego transforma información de atributos (S7002). Por ejemplo, después de la codificación de la información geométrica, si la posición de un punto tridimensional
cambia debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales reasigna la información de atributos sobre el punto tridimensional original al punto tridimensional cambiado de posición. Debe observarse que el dispositivo de codificación de datos tridimensionales puede realizar la reasignación mediante interpolación de valores de la información de atributos de acuerdo con la cantidad de cambio en la posición. Por ejemplo, el dispositivo de codificación de datos tridimensionales detecta N puntos tridimensionales aún no cambiados de posición cercanos a la posición tridimensional del punto tridimensional cambiado de posición, toma un promedio ponderado de los valores de la información de atributos sobre los N puntos tridimensionales basándose en la distancia entre las posiciones tridimensionales del punto tridimensional cambiado de posición y cada uno de los N puntos tridimensionales, y determina el valor resultante como el valor de la información de atributos sobre el punto tridimensional cambiado de posición. Si las posiciones tridimensionales de dos o más puntos tridimensionales se cambian a la misma posición tridimensional debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales puede asignar un valor promedio de la información de atributos sobre los dos o más puntos tridimensionales aún no cambiados de posición como el valor de la información de atributos sobre los puntos tridimensionales cambiados de posición. El dispositivo de codificación de datos tridimensionales luego codifica la información de atributos (S7003). Cuando el dispositivo de codificación de datos tridimensionales codifica una pluralidad de piezas de información de atributos, por ejemplo, el dispositivo de codificación de datos tridimensionales puede codificar secuencialmente la pluralidad de piezas de información de atributos. Por ejemplo, cuando el dispositivo de codificación de datos tridimensionales codifica color y reflectancia como información de atributos, el dispositivo de codificación de datos tridimensionales genera un flujo de bits que incluye el resultado de codificación de color seguido por el resultado de codificación de reflectancia. Debe observarse que la pluralidad de resultados de codificación de información de atributos puede incluirse en el flujo de bits en cualquier orden.
[1195] El dispositivo de codificación de datos tridimensionales puede añadir información que indica un punto de inicio de los datos codificados de cada información de atributos en el flujo de bits al encabezado o similar. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente información de atributos que necesita decodificarse y, por lo tanto, puede omitir el proceso de decodificación para información de atributos que no necesita decodificarse. Por lo tanto, la cantidad de procesamiento del dispositivo de decodificación de datos tridimensionales puede reducirse. El dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos en paralelo e integrar los resultados de la codificación en un flujo de bits. De esta manera, el dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos a alta velocidad.
[1196] La FIG.143 es un diagrama de flujo del proceso de codificación de información de atributos (S7003). En primer lugar, el dispositivo de codificación de datos tridimensionales establece un LoD (S7011). Es decir, el dispositivo de codificación de datos tridimensionales asigna cada punto tridimensional a cualquiera de una pluralidad de los LoD.
[1197] El dispositivo de codificación de datos tridimensionales luego inicia un bucle sobre una base de LoD (S7012). Es decir, el dispositivo de codificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7013 hasta la etapa S7021 para cada LoD.
[1198] El dispositivo de codificación de datos tridimensionales luego inicia un bucle sobre una base de un punto tridimensional (S7013). Es decir, el dispositivo de codificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7014 hasta la etapa S7020 para cada punto tridimensional.
[1199] En primer lugar, el dispositivo de codificación de datos tridimensionales busca una pluralidad de puntos periféricos, que son puntos tridimensionales presentes en la periferia del punto tridimensional actual, que van a utilizarse para el cálculo de un valor predicho del punto tridimensional actual que va a procesarse (S7014). El dispositivo de codificación de datos tridimensionales luego calcula un promedio ponderado de valores de la información de atributos sobre la pluralidad de puntos periféricos, y establece el valor obtenido como valor predicho P (S7015). El dispositivo de codificación de datos tridimensionales luego calcula un residual de predicción, que es la diferencia entre la información de atributos y el valor predicho del punto tridimensional actual (S7016). El dispositivo de codificación de datos tridimensionales luego calcula un valor cuantizado cuantizando el residual de predicción (S7017). El dispositivo de codificación de datos tridimensionales luego codifica aritméticamente el valor cuantizado (S7018). El dispositivo de codificación de datos tridimensionales luego determina ΔQP (S7019). ΔQP determinado aquí se utiliza para determinar un parámetro de cuantización utilizado para la cuantización de un residual de predicción subsiguiente.
[1200] El dispositivo de codificación de datos tridimensionales luego calcula un valor cuantizado inverso cuantizando inversamente el valor cuantizado (S7020). El dispositivo de codificación de datos tridimensionales luego genera un valor decodificado añadiendo el valor predicho al valor cuantizado inversamente (S7021). El dispositivo de codificación de datos tridimensionales luego termina el bucle sobre una base de un punto tridimensional (S7022). El dispositivo de codificación de datos tridimensionales también termina el bucle sobre una base de LoD (S7023).
[1201] La FIG. 144 es un diagrama de flujo del proceso de determinación de ΔQP (S7019). En primer lugar, el dispositivo de codificación de datos tridimensionales calcula la capa i a la que pertenece el punto tridimensional actual A que va a codificarse a continuación y el orden de codificación N (S7031). La capa i indica una capa LoD o una capa RAHT, por ejemplo.
[1202] El dispositivo de codificación de datos tridimensionales luego añade la cantidad de código real a una cantidad de código acumulada (S7032). Aquí, la cantidad de código acumulada se refiere a una cantidad de código acumulada para una trama, una tajada o un mosaico del punto tridimensional actual. Debe observarse que la cantidad de código acumulada puede referirse a una cantidad de código acumulada para una pluralidad de tramas, una pluralidad de tajadas o una pluralidad de mosaicos. Alternativamente, puede utilizarse una cantidad de código acumulada de información de atributos, o puede utilizarse una cantidad de código acumulada tanto de información geométrica como de información de atributos.
[1203] El dispositivo de codificación de datos tridimensionales luego determina si la cantidad de código acumulada es mayor que la cantidad de código deseada × TH1 o no (S7033). Aquí, la cantidad de código deseada se refiere a una cantidad de código deseada para una trama, una tajada o un mosaico del punto tridimensional actual. Debe observarse que la cantidad de código deseada puede referirse a una cantidad de código deseada para una pluralidad de tramas, una pluralidad de tajadas o una pluralidad de mosaicos. Alternativamente, puede utilizarse una cantidad de código deseada de información de atributos, o puede utilizarse una cantidad de código deseada tanto de información geométrica como de información de atributos.
[1204] Cuando la cantidad de código acumulada es igual o menor que la cantidad de código deseada × TH1 (si No en S7033), el dispositivo de codificación de datos tridimensionales determina si la cantidad de código acumulada es mayor que la cantidad de código deseada × TH2 o no (S7036).
[1205] Aquí, como umbrales TH1 y TH2, se establecen valores de 0.0 a 1.0, por ejemplo. Además, TH1 > TH2. Por ejemplo, cuando la cantidad de código acumulada es mayor que el valor de la cantidad de código deseada × TH1 (si Sí en S7033), el dispositivo de codificación de datos tridimensionales determina que la cantidad de código necesita reducirse tan pronto como sea posible, y establece ADelta_QP en el valor α con el fin de aumentar el parámetro de cuantización para el siguiente punto tridimensional N. El dispositivo de codificación de datos tridimensionales también establece NumPointADelta en el valor N, e incrementa j en 1 (S7034). El dispositivo de codificación de datos tridimensionales luego añade ADelta_QP = α y NumPointADelta = N al encabezado (S7035). Debe observarse que el valor α puede ser un valor fijo o un valor variable. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede determinar el valor α basándose en la magnitud de la diferencia entre la cantidad de código acumulada y la cantidad de código deseada × TH1. Por ejemplo, el dispositivo de codificación de datos tridimensionales establece el valor α para que sea mayor a medida que aumenta la diferencia entre la cantidad de código acumulada y la cantidad de código deseada × TH1. De esta manera, el dispositivo de codificación de datos tridimensionales puede controlar el parámetro de cuantización de modo que la cantidad de código acumulada no exceda la cantidad de código deseada.
[1206] Cuando la cantidad de código acumulada es mayor que la cantidad de código deseada × TH2 (si Sí en S7036), el dispositivo de codificación de datos tridimensionales establece Delta_Layer en el valor β con el fin de aumentar el parámetro de cuantización para la capa i a la que pertenece el punto tridimensional actual A o la capa subsiguiente i+1 (S7037). Por ejemplo, el dispositivo de codificación de datos tridimensionales establece Delta_Layer[i] de la capa i para que sea el valor β cuando el punto tridimensional actual A está en la parte superior de la capa i, y establece Delta_Layer[i+1] de la capa i+1 para que sea el valor β cuando el punto tridimensional actual A no está en la parte superior de la capa i.
[1207] El dispositivo de codificación de datos tridimensionales añade Delta_Layer = β de la capa i o la capa i+1 al encabezado (S7038). Debe observarse que el valor β puede ser un valor fijo o un valor variable. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede determinar el valor β basándose en la magnitud de la diferencia entre la cantidad de código acumulada y la cantidad de código deseada × TH2. Por ejemplo, el dispositivo de codificación de datos tridimensionales establece el valor β para que sea mayor a medida que aumenta la diferencia entre la cantidad de código acumulada y la cantidad de código deseada × TH2. De esta manera, el dispositivo de codificación de datos tridimensionales puede controlar el parámetro de cuantización de modo que la cantidad de código acumulada no exceda la cantidad de código deseada.
[1208] Si la cantidad de código acumulada excede o está a punto de exceder la cantidad de código deseada, el dispositivo de codificación de datos tridimensionales puede establecer el valor de ADelta_QP o Delta_Layer de modo que el parámetro de cuantización asuma el valor máximo soportado por el estándar o similar. De esta manera, el dispositivo de codificación de datos tridimensionales puede establecer el coeficiente de cuantización para puntos subsiguientes al punto tridimensional A o capas subsiguientes a la capa i para que sea 0, reduciendo de ese modo el aumento de la cantidad de código real e impidiendo que la cantidad de código acumulada exceda la cantidad de código deseada.
[1209] Si la cantidad de código acumulada es menor que la cantidad de código deseada × TH3, el dispositivo de codificación de datos tridimensionales puede disminuir el parámetro de cuantización de modo que la cantidad
de código real aumente. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede disminuir el parámetro de cuantización estableciendo el valor de Delta_Layer o ADelta_QP para que sea un valor negativo dependiendo de la diferencia entre la cantidad de código acumulada y la cantidad de código deseada. De esta manera, el dispositivo de codificación de datos tridimensionales puede generar un flujo de bits que tenga una cantidad de código cercana a la cantidad de código deseada.
[1210] La FIG.145 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con esta realización. En primer lugar, el dispositivo de decodificación de datos tridimensionales decodifica información geométrica (geometría) a partir del flujo de bits (S7005). Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza la decodificación utilizando una representación de octree. El dispositivo de decodificación de datos tridimensionales luego decodifica información de atributos a partir del flujo de bits (S7006). Por ejemplo, cuando el dispositivo de decodificación de datos tridimensionales decodifica una pluralidad de piezas de información de atributos, el dispositivo de decodificación de datos tridimensionales puede decodificar secuencialmente la pluralidad de piezas de información de atributos. Por ejemplo, cuando el dispositivo de decodificación de datos tridimensionales decodifica color y reflectancia como información de atributos, el dispositivo de decodificación de datos tridimensionales puede decodificar el resultado de codificación de color y el resultado de codificación de reflectancia en el orden de los mismos en el flujo de bits. Por ejemplo, si el resultado de codificación de color es seguido por el resultado de codificación de reflectancia en el flujo de bits, el dispositivo de decodificación de datos tridimensionales primero decodifica el resultado de codificación de color y luego decodifica el resultado de codificación de reflectancia. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede decodificar el resultado de codificación de información de atributos en el flujo de bits en cualquier orden.
[1211] El dispositivo de decodificación de datos tridimensionales puede obtener la información que indica el punto de inicio de los datos codificados de cada pieza de información de atributos en el flujo de bits decodificando el encabezado o similar. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente información de atributos que necesita decodificarse y, por lo tanto, puede omitir el proceso de decodificación para información de atributos que no necesita decodificarse. Por lo tanto, la cantidad de procesamiento del dispositivo de decodificación de datos tridimensionales puede reducirse. El dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos en paralelo e integrar los resultados de la decodificación en una nube de puntos tridimensional. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos a alta velocidad.
[1212] La FIG. 146 es un diagrama de flujo del proceso de decodificación de información de atributos (S7006). En primer lugar, el dispositivo de decodificación de datos tridimensionales establece un LoD (S7041). Es decir, el dispositivo de decodificación de datos tridimensionales asigna cada uno de una pluralidad de puntos tridimensionales que tienen información geométrica decodificada a cualquiera de una pluralidad de los LoD. Por ejemplo, el método de asignación es el mismo que el método de asignación utilizado en el dispositivo de codificación de datos tridimensionales.
[1213] El dispositivo de decodificación de datos tridimensionales luego decodifica ΔQP a partir del flujo de bits (S7042). Específicamente, el dispositivo de decodificación de datos tridimensionales decodifica Delta_Layer, ADelta_QP y NumPointADelta a partir del encabezado del flujo de bits.
[1214] El dispositivo de decodificación de datos tridimensionales luego inicia un bucle sobre una base de LoD (S7043). Es decir, el dispositivo de decodificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7044 hasta la etapa S7050 para cada LoD.
[1215] El dispositivo de decodificación de datos tridimensionales luego inicia un bucle sobre una base de un punto tridimensional (S7044). Es decir, el dispositivo de decodificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7045 hasta la etapa S7049 para cada punto tridimensional.
[1216] En primer lugar, el dispositivo de decodificación de datos tridimensionales busca una pluralidad de puntos periféricos, que son puntos tridimensionales presentes en la periferia del punto tridimensional actual, que van a utilizarse para el cálculo de un valor predicho del punto tridimensional actual que va a procesarse (S7045). El dispositivo de decodificación de datos tridimensionales luego calcula un promedio ponderado de valores de la información de atributos sobre la pluralidad de puntos periféricos, y establece el valor obtenido como valor predicho P (S7046). Debe observarse que estos procesamientos son iguales a aquellos en el dispositivo de codificación de datos tridimensionales.
[1217] El dispositivo de decodificación de datos tridimensionales luego decodifica aritméticamente el valor cuantizado a partir del flujo de bits (S7047). El dispositivo de decodificación de datos tridimensionales luego calcula un valor cuantizado inverso cuantizando inversamente el valor cuantizado decodificado (S7048). En esta cuantización inversa, se utiliza un parámetro de cuantización calculado usando ΔQP obtenido en la etapa S7042.
[1218] El dispositivo de decodificación de datos tridimensionales luego genera un valor decodificado añadiendo el valor predicho al valor cuantizado inverso (S7049). El dispositivo de decodificación de datos tridimensionales luego termina el bucle sobre una base de un punto tridimensional (S7050). El dispositivo de decodificación de datos tridimensionales también termina el bucle sobre una base de LoD (S7051).
[1219] La FIG. 147 es un diagrama de bloques del codificador de información de atributos 7023. El codificador de información de atributos 7023 incluye establecedor de LoD 7061, buscador 7062, predictor 7063, sustractor 7064, cuantizador 7065, cuantizador inverso 7066, reconstructor 7067, memoria 7068, y calculador de ΔQP 7070.
[1220] El establecedor de LoD 7061 genera un LoD utilizando información geométrica sobre un punto tridimensional. El buscador 7062 busca un punto tridimensional vecino de cada punto tridimensional utilizando un resultado de generación de LoD e información de distancia entre puntos tridimensionales. El predictor 7063 genera un valor predicho de información de atributos de un punto tridimensional actual. El predictor 7063 también asigna un valor predicho a una pluralidad de modos de predicción 0 a M-1, y selecciona un modo de predicción que va a utilizarse de entre la pluralidad de modos de predicción.
[1221] El sustractor 7064 genera un residual de predicción sustrayendo el valor predicho de la información de atributos. El cuantizador 7065 cuantiza el residual de predicción de la información de atributos. El cuantizador inverso 7066 cuantiza inversamente el residual de predicción cuantizado. El reconstructor 7067 genera un valor decodificado sumando el valor predicho y el residual de predicción cuantizado inversamente. La memoria 7068 almacena el valor (valor decodificado) de la información de atributos decodificada sobre cada punto tridimensional. La información de atributos decodificada sobre los puntos tridimensionales almacenada en la memoria 7068 se utiliza para la predicción de un punto tridimensional que aún no se ha codificado por el predictor 7063.
[1222] El codificador aritmético 7069 calcula ZeroCnt a partir del residual de predicción cuantizado, y codifica aritméticamente ZeroCnt. El codificador aritmético 7069 también codifica aritméticamente cualquier residual de predicción cuantizado que no sea cero. El codificador aritmético 7069 puede binarizar el residual de predicción antes de la codificación aritmética. El codificador aritmético 7069 puede generar y codificar diversos tipos de información de encabezado. El codificador aritmético 7069 puede codificar aritméticamente información de modo de predicción (PredMode) que indica el modo de predicción utilizado para la codificación por el predictor 7063, y añadir la información al flujo de bits.
[1223] El calculador de ΔQP 7070 determina valores de Delta_Layer, ADelta_QP y NumPointADelta a partir de la cantidad de código real obtenida por el codificador aritmético 7069 y la cantidad de código deseada predeterminada. La cuantización por el cuantizador 7065 se realiza utilizando un parámetro de cuantización basado en Delta_Layer, ADelta_QP y NumPointADelta determinados. El codificador aritmético 7069 codifica aritméticamente Delta_Layer, ADelta_QP y NumPointADelta y añade estos valores al flujo de bits.
[1224] La FIG.148 es un diagrama de bloques del decodificador de información de atributos 7043. El decodificador de información de atributos 7043 incluye decodificador aritmético 7071, establecedor de LoD 7072, buscador 7073, predictor 7074, cuantizador inverso 7075, reconstructor 7076 y memoria 7077.
[1225] El decodificador aritmético 7071 decodifica aritméticamente ZeroCnt y el residual de predicción incluidos en el flujo de bits. El decodificador aritmético 7071 también decodifica diversos tipos de información de encabezado. El decodificador aritmético 7071 también decodifica aritméticamente información de modo de predicción (PredMode) a partir del flujo de bits, y emite la información de modo de predicción obtenida al predictor 7074. El decodificador aritmético 7071 también decodifica Delta_Layer, ADelta_QP y NumPointADelta a partir del encabezado del flujo de bits.
[1226] El establecedor de LoD 7072 genera un LoD utilizando información geométrica decodificada sobre un punto tridimensional. El buscador 7073 busca un punto tridimensional vecino de cada punto tridimensional utilizando un resultado de generación de LoD e información de distancia entre puntos tridimensionales.
[1227] El predictor 7074 genera un valor predicho de información de atributos de un punto tridimensional actual que va a decodificarse. El cuantizador inverso 7075 cuantiza inversamente el residual de predicción decodificado aritméticamente. Específicamente, el cuantizador inverso 7075 realiza la cuantización inversa utilizando un parámetro de cuantización basado en Delta_Layer, ADelta_QP y NumPointADelta decodificados.
[1228] El reconstructor 7076 genera un valor decodificado sumando el valor predicho y el residual de predicción cuantizado inversamente. La memoria 7077 almacena el valor (valor decodificado) de la información de atributos decodificada sobre cada punto tridimensional. La información de atributos decodificada sobre los puntos tridimensionales almacenada en la memoria 7077 se utiliza para la predicción de un punto tridimensional que aún no se ha decodificado por el predictor 7074.
[1229] A continuación, se describirá un ejemplo en el que se utilizan capas RAHT en lugar de las capas LoD. La FIG.
[1230] 149 es un diagrama que muestra un ejemplo en el que los parámetros de cuantización se controlan sobre una
base de una unidad más fina cuando la información de atributos se codifica utilizando RAHT. Por ejemplo, cuando codifica información de atributos utilizando RAHT, el dispositivo de codificación de datos tridimensionales define ADelta_QP y NumPointADelta, que representa la información geométrica sobre un punto tridimensional al que se va a añadir ADelta_QP, además de Delta_Layer para cada capa RAHT. El dispositivo de codificación de datos tridimensionales realiza la codificación cambiando el valor del parámetro de cuantización basándose en Delta_Layer, ADelta_QP y NumPointADelta.
[1231] El dispositivo de codificación de datos tridimensionales puede añadir ADelta y NumPointADelta utilizados para la codificación al encabezado o similar del flujo de bits. Esto permite que el dispositivo de codificación de datos tridimensionales codifique información de atributos sobre puntos tridimensionales cambiando el parámetro de cuantización para cada punto tridimensional de acuerdo con la cantidad de código deseada y la cantidad de código real, por ejemplo. De esta manera, el dispositivo de codificación de datos tridimensionales puede generar finalmente un flujo de bits que tenga una cantidad de código cercana a la cantidad de código deseada. El dispositivo de decodificación de datos tridimensionales puede decodificar apropiadamente el flujo de bits decodificando QPbase, Delta_Layer y ADelta incluidos en el encabezado para generar los parámetros de cuantización utilizados por el dispositivo de codificación de datos tridimensionales.
[1232] Por ejemplo, el valor cuantizado QP4 de la información de atributos N0-ésima se calcula de acuerdo con QP4 = QP3 ADelta_QP[0]. Cada ADelta_QP[i] puede ser el valor de diferencia con respecto a QPbase, como QP4 = QPbase ADelta_QP[0].
[1233] La FIG.150 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos) en el caso en que se utiliza el ejemplo mostrado en la FIG.149. El encabezado de información de atributos mostrado en la FIG.150 es básicamente el mismo que el encabezado de información de atributos mostrado en la FIG.140, pero difiere en que se utilizan capas RAHT en lugar de capas LoD.
[1234] NumADelta indica el número de todos los ADelta_QP incluidos en el flujo de bits. NumPointADelta[i] indica un número de identificación del punto tridimensional A al que se aplica ADelta_QP[i]. Por ejemplo, NumPointADelta[i] indica el número de los puntos tridimensionales desde el punto tridimensional inicial hasta el punto tridimensional A en el orden de codificación/decodificación. NumPointADelta[i] también puede indicar el número de los puntos tridimensionales desde el primer punto tridimensional hasta el punto tridimensional A en la capa a la que pertenece el punto tridimensional A.
[1235] Alternativamente, NumPointADelta[i] puede indicar el valor de diferencia entre el número de identificación del punto tridimensional indicado por NumPointADelta[i-1] y el número de identificación del punto tridimensional A. De esta manera, el valor de NumPointADelta[i] puede reducirse, de modo que la cantidad de código puede reducirse.
[1236] La FIG.151 es un diagrama que muestra otro ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos) en el caso en que se utiliza el ejemplo mostrado en la FIG.149. Debe observarse que el encabezado de información de atributos mostrado en la FIG.151 es básicamente el mismo que el encabezado de información de atributos mostrado en la FIG.141, pero difiere en que se utilizan capas RAHT en lugar de capas LoD.
[1237] additional_delta_QP_present_flag es un indicador que indica si ADelta_QP está incluido o no en el flujo de bits. Por ejemplo, un valor de 1 indica que ADelta_QP está incluido en el flujo de bits, y un valor de 0 indica que ADelta_QP no está incluido en el flujo de bits. Cuando additional_delta_QP_present_flag es 0, el dispositivo de decodificación de datos tridimensionales realiza el siguiente proceso de decodificación estableciendo ADelta_QP para que sea 0, por ejemplo.
[1238] NumADelta_minus1 indica el número de todos los ADelta_QP incluidos en el flujo de bits menos 1. De esta manera, añadiendo al encabezado el valor obtenido restando 1 del número de ADelta_QP, la cantidad de código del encabezado puede reducirse. Por ejemplo, el dispositivo de decodificación de datos tridimensionales calcula NumADelta = NumADelta_minus1 1. ADelta_QP[i] indica el valor del i-ésimo ADelta_QP. Debe observarse que ADelta_QP[i] puede establecerse no solo para que sea un valor positivo sino también un valor negativo. La FIG.152 es un diagrama de flujo de un proceso de codificación de datos tridimensionales en el caso en que se utiliza RAHT. En primer lugar, el dispositivo de codificación de datos tridimensionales codifica información geométrica (geometría) (S7061). Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza la codificación utilizando una representación de octree.
[1239] El dispositivo de codificación de datos tridimensionales luego transforma información de atributos (S7062). Por ejemplo, después de la codificación de la información geométrica, si la posición de un punto tridimensional cambia debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales reasigna la información de atributos sobre el punto tridimensional original al punto tridimensional cambiado de posición. Debe observarse que el dispositivo de codificación de datos tridimensionales puede realizar la reasignación mediante interpolación de valores de la información de atributos de acuerdo con la cantidad de cambio en la
posición. Por ejemplo, el dispositivo de codificación de datos tridimensionales detecta N puntos tridimensionales aún no cambiados de posición cercanos a la posición tridimensional del punto tridimensional cambiado de posición, toma un promedio ponderado de los valores de la información de atributos sobre los N puntos tridimensionales basándose en la distancia entre las posiciones tridimensionales del punto tridimensional cambiado de posición y cada uno de los N puntos tridimensionales, y determina el valor resultante como el valor de la información de atributos sobre el punto tridimensional cambiado de posición. Si las posiciones tridimensionales de dos o más puntos tridimensionales se cambian a la misma posición tridimensional debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales puede asignar un valor promedio de la información de atributos sobre los dos o más puntos tridimensionales aún no cambiados de posición como el valor de la información de atributos sobre los puntos tridimensionales cambiados de posición. El dispositivo de codificación de datos tridimensionales luego codifica la información de atributos (S7063). Cuando el dispositivo de codificación de datos tridimensionales codifica una pluralidad de piezas de información de atributos, por ejemplo, el dispositivo de codificación de datos tridimensionales puede codificar secuencialmente la pluralidad de piezas de información de atributos. Por ejemplo, cuando el dispositivo de codificación de datos tridimensionales codifica color y reflectancia como información de atributos, el dispositivo de codificación de datos tridimensionales genera un flujo de bits que incluye el resultado de codificación de color seguido por el resultado de codificación de reflectancia. Debe observarse que la pluralidad de resultados de codificación de información de atributos puede incluirse en el flujo de bits en cualquier orden.
[1240] El dispositivo de codificación de datos tridimensionales puede añadir información que indica un punto de inicio de los datos codificados de cada información de atributos en el flujo de bits al encabezado o similar. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente información de atributos que necesita decodificarse y, por lo tanto, puede omitir el proceso de decodificación para información de atributos que no necesita decodificarse. Por lo tanto, la cantidad de procesamiento del dispositivo de decodificación de datos tridimensionales puede reducirse. El dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos en paralelo e integrar los resultados de la codificación en un flujo de bits. De esta manera, el dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos a alta velocidad.
[1241] La FIG.153 es un diagrama de flujo del proceso de codificación de información de atributos (S7063). En primer lugar, el dispositivo de codificación de datos tridimensionales genera un coeficiente de codificación a partir de información de atributos mediante transformación de Haar (S7071).
[1242] El dispositivo de codificación de datos tridimensionales luego aplica cuantización al coeficiente de codificación (S7072). El dispositivo de codificación de datos tridimensionales luego genera información de atributos codificada (flujo de bits) codificando el coeficiente de codificación cuantizado (S7073).
[1243] El dispositivo de codificación de datos tridimensionales luego determina ΔQP (S7074). Debe observarse que el método de determinación de ΔQP es igual a la etapa S7019 en el caso en que se utilizan capas LoD. ΔQP determinado se utiliza para determinar un parámetro de cuantización utilizado para la cuantización de un coeficiente de codificación subsiguiente.
[1244] El dispositivo de codificación de datos tridimensionales aplica cuantización inversa al coeficiente de codificación cuantizado (S7075). El dispositivo de codificación de datos tridimensionales luego decodifica la información de atributos aplicando transformación de Haar inversa al coeficiente de codificación cuantizado inversamente (S7076). Por ejemplo, la información de atributos decodificada se refiere en la codificación subsiguiente. La FIG.154 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales en el caso en que se utiliza RAHT. En primer lugar, el dispositivo de decodificación de datos tridimensionales decodifica información geométrica (geometría) a partir del flujo de bits (S7065). Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza la decodificación utilizando una representación de octree. El dispositivo de decodificación de datos tridimensionales luego decodifica información de atributos a partir del flujo de bits (S7066). Por ejemplo, cuando el dispositivo de decodificación de datos tridimensionales decodifica una pluralidad de piezas de información de atributos, el dispositivo de decodificación de datos tridimensionales puede decodificar secuencialmente la pluralidad de piezas de información de atributos. Por ejemplo, cuando el dispositivo de decodificación de datos tridimensionales decodifica color y reflectancia como información de atributos, el dispositivo de decodificación de datos tridimensionales decodifica el resultado de codificación de color y el resultado de codificación de reflectancia en el orden de los mismos en el flujo de bits. Por ejemplo, si el resultado de codificación de color es seguido por el resultado de codificación de reflectancia en el flujo de bits, el dispositivo de decodificación de datos tridimensionales primero decodifica el resultado de codificación de color y luego decodifica el resultado de codificación de reflectancia. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede decodificar el resultado de codificación de información de atributos en el flujo de bits en cualquier orden.
[1245] El dispositivo de decodificación de datos tridimensionales puede obtener la información que indica el punto de inicio de los datos codificados de cada pieza de información de atributos en el flujo de bits decodificando el encabezado o similar. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente información de atributos que necesita decodificarse y, por lo tanto, puede omitir el proceso de decodificación para información de atributos que no necesita decodificarse. Por lo tanto, la cantidad de procesamiento del dispositivo de decodificación de datos tridimensionales puede reducirse. El dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos en paralelo e integrar los resultados de la decodificación en una nube de puntos tridimensional. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos a alta velocidad.
[1246] La FIG. 155 es un diagrama de flujo del proceso de decodificación de información de atributos (S7066). En primer lugar, el dispositivo de decodificación de datos tridimensionales decodifica el coeficiente de codificación a partir del flujo de bits (S7081). El dispositivo de decodificación de datos tridimensionales luego decodifica ΔQP a partir del flujo de bits (S7082). Específicamente, el dispositivo de decodificación de datos tridimensionales decodifica Delta_Layer, ADelta_QP y NumPointADelta a partir del encabezado del flujo de bits. El dispositivo de decodificación de datos tridimensionales luego aplica cuantización inversa al coeficiente de codificación (S7083). En esta cuantización inversa, se utiliza un parámetro de cuantización calculado usando ΔQP obtenido en la etapa S7082. El dispositivo de decodificación de datos tridimensionales luego decodifica la información de atributos aplicando transformación de Haar inversa al coeficiente de codificación cuantizado inversamente (S7084).
[1247] La FIG.156 es un diagrama de bloques del codificador de información de atributos 7023 en el caso en que se utiliza RAHT. El codificador de información de atributos 7023 incluye clasificador 7081, transformador de Haar 7082, cuantizador 7083, cuantizador inverso 7084, transformador de Haar inverso 7085, memoria 7086, codificador aritmético 7087 y calculador de ΔQP 7088.
[1248] El clasificador 7081 genera un código de Morton utilizando información geométrica sobre un punto tridimensional, y clasifica una pluralidad de puntos tridimensionales en el orden de los códigos de Morton. El transformador de Haar 7082 genera un coeficiente de codificación aplicando transformación de Haar a información de atributos. El cuantizador 7083 cuantiza el coeficiente de codificación de la información de atributos.
[1249] El cuantizador inverso 7084 cuantiza inversamente el coeficiente de codificación cuantizado. El transformador de Haar inverso 7085 aplica transformación de Haar inversa al coeficiente de codificación. La memoria 7086 almacena valores de la información de atributos decodificada sobre la pluralidad de puntos tridimensionales. Por ejemplo, la información de atributos decodificada sobre los puntos tridimensionales almacenada en la memoria 7086 puede utilizarse para predicción o similar de un punto tridimensional que aún no se ha codificado. El codificador aritmético 7087 calcula ZeroCnt a partir del coeficiente de codificación cuantizado, y codifica aritméticamente ZeroCnt. El codificador aritmético 7087 también codifica aritméticamente cualquier coeficiente de codificación cuantizado que no sea cero. El codificador aritmético 7087 puede binarizar el coeficiente de codificación antes de la codificación aritmética. El codificador aritmético 7087 puede generar y codificar diversos tipos de información de encabezado.
[1250] El calculador de ΔQP 7088 determina valores de Delta_Layer, ADelta_QP y NumPointADelta a partir de la cantidad de código real obtenida por el codificador aritmético 7087 y la cantidad de código deseada predeterminada. La cuantización por el cuantizador 7083 se realiza utilizando un parámetro de cuantización basado en Delta_Layer, ADelta_QP y NumPointADelta determinados. El codificador aritmético 7087 codifica aritméticamente Delta_Layer, ADelta_QP y NumPointADelta y añade estos valores al flujo de bits.
[1251] La FIG.157 es un diagrama de bloques del decodificador de información de atributos 7043 en el caso en que se utiliza RAHT. El decodificador de información de atributos 7043 incluye decodificador aritmético 7091, cuantizador inverso 7092, transformador de Haar inverso 7093 y memoria 7094.
[1252] El decodificador aritmético 7091 decodifica aritméticamente ZeroCnt y el coeficiente de codificación incluidos en el flujo de bits. El decodificador aritmético 7091 puede decodificar diversos tipos de información de encabezado. El decodificador aritmético 7091 también decodifica Delta_Layer, ADelta_QP y NumPointADelta a partir del encabezado del flujo de bits.
[1253] El cuantizador inverso 7092 cuantiza inversamente el coeficiente de codificación decodificado aritméticamente. Específicamente, el cuantizador inverso 7092 realiza la cuantización inversa utilizando un parámetro de cuantización basado en Delta_Layer, ADelta_QP y NumPointADelta decodificados.
[1254] El transformador de Haar inverso 7093 aplica transformación de Haar inversa al coeficiente de codificación cuantizado inversamente. La memoria 7094 almacena valores de la información de atributos decodificada sobre la pluralidad de puntos tridimensionales. Por ejemplo, la información de atributos decodificada sobre los puntos
tridimensionales almacenada en la memoria 7094 puede utilizarse para predicción de un punto tridimensional que aún no se ha decodificado.
[1255] A continuación, se describirá una variación de esta realización. El dispositivo de codificación de datos tridimensionales puede codificar un parámetro de cuantización de información de atributos sobre cada punto tridimensional como nueva información de atributos.
[1256] A continuación, se describirá un ejemplo de un proceso realizado por el dispositivo de codificación de datos tridimensionales en este caso. El dispositivo de codificación de datos tridimensionales codifica información de atributos A (tal como color) calculando un parámetro de cuantización de acuerdo con el flujo mostrado en la FIG. 143. En este proceso, como un nuevo valor de atributo de cada punto tridimensional, el dispositivo de codificación de datos tridimensionales codifica el parámetro de cuantización utilizado. En este caso, el dispositivo de codificación de datos tridimensionales puede realizar la codificación cambiando el valor del parámetro de cuantización para cada punto tridimensional. Por ejemplo, si la cantidad de código acumulada es mayor que el valor de la cantidad de código deseada × TH1, el dispositivo de codificación de datos tridimensionales puede establecer el valor del parámetro de cuantización para que sea mayor, con el fin de reducir la cantidad de código real. Si la cantidad de código acumulada es menor que el valor de la cantidad de código deseada × TH3, el dispositivo de codificación de datos tridimensionales puede establecer el valor del parámetro de cuantización para que sea menor, con el fin de aumentar la cantidad de código real.
[1257] Después de la codificación de información de atributos A, el dispositivo de codificación de datos tridimensionales codifica el parámetro de cuantización asignado a cada punto tridimensional como nueva información de atributos A’. En este proceso, el dispositivo de codificación de datos tridimensionales puede aplicar codificación sin pérdidas para impedir la pérdida de la cantidad de información sobre los parámetros de cuantización. El dispositivo de codificación de datos tridimensionales puede añadir, al encabezado o similar, información que indica que la información de atributos codificada es un parámetro de cuantización. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar apropiadamente el parámetro de cuantización utilizado por el dispositivo de codificación de datos tridimensionales.
[1258] Cuando se realiza codificación predictiva de información de atributos utilizando N puntos tridimensionales en la periferia de un punto tridimensional actual, el dispositivo de codificación de datos tridimensionales puede codificar un parámetro de cuantización bajo la suposición de que N = 1. De esta manera, la cantidad de cálculo puede reducirse.
[1259] A continuación, se describirá un ejemplo de un proceso realizado por el dispositivo de decodificación de datos tridimensionales. En primer lugar, el dispositivo de decodificación de datos tridimensionales decodifica información de atributos A’ de entre la información de atributos en el flujo de bits para obtener un parámetro de cuantización utilizado para la decodificación de información de atributos A. El dispositivo de decodificación de datos tridimensionales luego decodifica información de atributos A utilizando el parámetro de cuantización decodificado.
[1260] Debe observarse que el dispositivo de codificación de datos tridimensionales puede codificar, como nueva información de atributos A’, ΔQP, que es la cantidad de cambio del parámetro de cuantización entre puntos tridimensionales, en lugar del parámetro de cuantización descrito anteriormente. Cuando ΔQP asume un valor positivo o negativo, el dispositivo de codificación de datos tridimensionales puede transformar ΔQP con signo en un valor positivo antes de codificar ΔQP como se describe a continuación. Cuando ΔQP con signo (deltaQP_s) es menor que 0, ΔQP sin signo (deltaQP_u) se establece para que sea -1-(2 × deltaQP_s). Cuando ΔQP con signo (deltaQP_s) es igual o mayor que 0, ΔQP sin signo (deltaQP_u) se establece para que sea 2 × deltaQP_s.
[1261] El dispositivo de codificación de datos tridimensionales puede codificar, como información de atributos, un parámetro de cuantización utilizado para la codificación de cada información de atributos. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede codificar un parámetro de cuantización de información de atributos A sobre color como información de atributos A’, y codificar un parámetro de cuantización de información de atributos B sobre reflectancia como información de atributos B’. De esta manera, el parámetro de cuantización puede cambiarse para cada información de atributos. Por ejemplo, si el parámetro de cuantización de información de atributos que tiene mayor prioridad se establece para que sea menor, y el parámetro de cuantización de información de atributos que tiene menor prioridad se establece para que sea mayor, la cantidad total de código puede reducirse mientras se conserva la información de atributos que tiene mayor prioridad.
[1262] Cuando se cuantiza y codifica un residual de predicción para información de atributos sobre un punto tridimensional, si delta_Layer_present_flag, additional_delta_QP_present_flag y similares indican que Delta_Layer y ADelta_QP están establecidos en el encabezado, el dispositivo de codificación de datos tridimensionales no necesita utilizar el valor de un peso de cuantización (QW) que indica la importancia de un punto tridimensional. Por ejemplo, cuando se utiliza QW, el parámetro de cuantización se establece para que sea menor cuando QW es mayor (la importancia es mayor). De esta manera, puede elegirse si realizar la
cuantización basándose en la importancia determinada por un proceso interno tal como predicción o basándose en un valor establecido en el encabezado por el usuario, de modo que las dos maneras pueden utilizarse selectivamente dependiendo del propósito del usuario.
[1263] El dispositivo de codificación de datos tridimensionales puede añadir, al encabezado, un indicador que indica si utilizar o no el valor del peso de cuantización (QW). De esta manera, puede elegirse si realizar o no la cuantización combinando los valores de Delta_Layer y ADelta_QP y QW, las dos maneras pueden utilizarse selectivamente dependiendo del propósito del usuario.
[1264] Cuando se cuantiza y codifica un coeficiente de transformación para información de atributos sobre un punto tridimensional utilizando RAHT o similar, si delta_Layer_present_flag, additional_delta_QP_present_flag y similares indican que Delta_Layer y ADelta_QP están establecidos en el encabezado, el dispositivo de codificación de datos tridimensionales no necesita utilizar el valor del peso de cuantización (QW). De esta manera, puede elegirse si realizar la cuantización basándose en la importancia determinada por un proceso interno tal como predicción o basándose en un valor establecido en el encabezado por el usuario, de modo que las dos maneras pueden utilizarse selectivamente dependiendo del propósito del usuario. Además, el dispositivo de codificación de datos tridimensionales puede añadir, al encabezado, un indicador que indica si utilizar o no el valor del peso de cuantización (QW). De esta manera, puede elegirse si realizar o no la cuantización combinando los valores de Delta_Layer y ADelta_QP y QW, las dos maneras pueden utilizarse selectivamente dependiendo del propósito del usuario.
[1265] La FIG.158 es un diagrama que muestra un ejemplo de sintaxis de un encabezado de información de atributos (información de encabezado de atributos) en este caso. El encabezado de información de atributos mostrado en la FIG. 158 difiere del encabezado de información de atributos mostrado en la FIG. 141 en que el encabezado de información de atributos incluye además default_delta_Layer_present_flag, default_delta_Layer_index, default_additional_delta_QP_present_flag y default_additional_delta_QP_index. default_delta_Layer_present_flag es un indicador que indica si utilizar o no un valor inicialmente establecido de Delta_Layer definido por una norma o similar. Por ejemplo, un valor de 1 indica que Delta_Layer inicialmente establecido va a utilizarse. Un valor de 0 indica que Delta_Layer inicialmente establecido no va a utilizarse. En el caso del valor de 0, el dispositivo de decodificación de datos tridimensionales realiza el siguiente proceso de decodificación estableciendo Delta_Layer para que sea 0, por ejemplo.
[1266] default_delta_Layer_index es información que permite la identificación de Delta_Layer que va a utilizarse de entre uno o más valores inicialmente establecidos de Delta_Layer definidos por una norma o similar. Por ejemplo, default_delta_Layer_index se define como se describe a continuación.
[1267] Cuando default_delta_Layer_index = 0, Delta_Layer para todas las capas se establece para que sea 1. Es decir, el valor del parámetro de cuantización aumenta en 1 cada vez que se incrementa una capa. Cuando default_delta_Layer_index = 1, Delta_Layer para todas las capas se establece para que sea 2. Es decir, el valor del parámetro de cuantización aumenta en 2 cada vez que se incrementa una capa.
[1268] Si un Delta_Layer inicialmente establecido se define por una norma o similar de esta manera, el parámetro de cuantización puede cambiarse sin añadir el valor de Delta_Layer al encabezado, de modo que la cantidad de código del encabezado puede reducirse.
[1269] default_additional_delta_QP_present_flag es un indicador que indica si utilizar o no un valor inicialmente establecido de ADelta_QP definido por una norma o similar. Por ejemplo, un valor de 1 indica que ADelta_QP inicialmente establecido va a utilizarse. Un valor de 0 indica que ADelta_QP inicialmente establecido no va a utilizarse. En el caso del valor de 0, el dispositivo de decodificación de datos tridimensionales realiza el siguiente proceso de decodificación estableciendo ADelta_QP para que sea 0, por ejemplo. default_additional_delta_QP_index es información que permite la identificación de ADelta_QP que va a utilizarse de entre uno o más valores inicialmentes establecidos de ADelta_QP definidos por una norma o similar. Por ejemplo, default_additional_delta_QP_index se define como se describe a continuación.
[1270] Cuando default_additional_delta_QP_index = 0, ADelta_QP se establece para que sea 1 cada N puntos tridimensionales. Es decir, el valor del parámetro de cuantización aumenta en 1 cada vez que se codifican o decodifican N puntos tridimensionales. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir adicionalmente información que indica N al encabezado.
[1271] Cuando default_additional_delta_QP_index = 1, ADelta_QP se establece para que sea 2 cada N puntos tridimensionales. Es decir, el valor del parámetro de cuantización aumenta en 2 cada vez que se codifican o decodifican N puntos tridimensionales. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir adicionalmente información que indica N al encabezado.
[1272] Si un ADelta_QP inicialmente establecido se define por una norma o similar de esta manera, el parámetro de cuantización puede cambiarse sin añadir el valor de ADelta_QP al encabezado, de modo que la cantidad de código del encabezado puede reducirse.
[1273] Como se ha descrito anteriormente, el dispositivo de codificación de datos tridimensionales de acuerdo con esta realización realiza el proceso mostrado en la FIG. 159. El dispositivo de codificación de datos tridimensionales calcula una pluralidad de valores de coeficiente (tales como residuales de predicción o coeficientes de codificación) a partir de una pluralidad de piezas de información de atributos sobre una pluralidad de puntos tridimensionales incluidos en datos de nube de puntos (S7091). El dispositivo de codificación de datos tridimensionales luego genera una pluralidad de valores cuantizados cuantizando cada uno de la pluralidad de valores de coeficiente (S7092). El dispositivo de codificación de datos tridimensionales luego genera un flujo de bits que incluye la pluralidad de valores cuantizados (S7093). La pluralidad de valores de coeficiente pertenece a cualquiera de una pluralidad de capas (tales como capas LoD o capas RAHT). En la cuantización (S7092), el dispositivo de codificación de datos tridimensionales cuantiza cada uno de la pluralidad de valores de coeficiente utilizando un parámetro de cuantización para la capa a la que pertenece el valor de coeficiente. El flujo de bits incluye primera información (tal como QPbase) que indica un parámetro de cuantización de referencia y una pluralidad de piezas de segunda información (tal como Delta_Layer[i]) para calcular una pluralidad de parámetros de cuantización para la pluralidad de capas a partir del parámetro de cuantización de referencia.
[1274] Con tal configuración, el dispositivo de codificación de datos tridimensionales puede cambiar el parámetro de cuantización para cada capa y, por lo tanto, puede realizar apropiadamente la codificación. Además, dado que el dispositivo de codificación de datos tridimensionales codifica la primera información que indica un parámetro de cuantización de referencia y la segunda información para calcular una pluralidad de parámetros de cuantización a partir del parámetro de cuantización de referencia, la eficiencia de codificación puede mejorarse. Por ejemplo, cada una de la pluralidad de piezas de segunda información indica la diferencia entre el parámetro de cuantización de referencia y el parámetro de cuantización para la capa.
[1275] Por ejemplo, el flujo de bits incluye además un primer indicador (delta_Layer_present_flag) que indica si la pluralidad de piezas de segunda información está incluida o no en el flujo de bits.
[1276] Por ejemplo, el flujo de bits incluye además tercera información (tal como NumLayer) que indica el número de la pluralidad de piezas de segunda información incluidas en el flujo de bits.
[1277] Por ejemplo, la pluralidad de puntos tridimensionales se clasifica en cualquiera de una pluralidad de capas (tales como los LoD) basándose en la información geométrica sobre la pluralidad de puntos tridimensionales. Por ejemplo, la pluralidad de valores de coeficiente se genera clasificando cada una de la pluralidad de piezas de información de atributos en un componente de frecuencia más alta y un componente de frecuencia más baja para clasificarse en cualquiera de las capas (tales como capas RAHT).
[1278] Por ejemplo, el dispositivo de codificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso descrito anteriormente utilizando la memoria.
[1279] El dispositivo de decodificación de datos tridimensionales de acuerdo con esta realización realiza el proceso mostrado en la FIG. 160. El dispositivo de decodificación de datos tridimensionales calcula parámetros de cuantización para una pluralidad de capas basándose en (i) primera información (tal como QPbase) que indica un parámetro de cuantización de referencia y (ii) una pluralidad de piezas de segunda información (tal como Delta_Layer[i]) para calcular una pluralidad de parámetros de cuantización para una pluralidad de capas a partir del parámetro de cuantización de referencia que están incluidas en el flujo de bits (S7095).
[1280] El dispositivo de decodificación de datos tridimensionales luego genera una pluralidad de valores de coeficiente (tales como residuales de predicción o coeficientes de codificación) cuantizando inversamente cada uno de la pluralidad de valores cuantizados incluidos en el flujo de bits utilizando el parámetro de cuantización para la capa a la que pertenece el valor cuantizado de entre los parámetros de cuantización calculados para la pluralidad de capas (S7096). El dispositivo de decodificación de datos tridimensionales luego calcula una pluralidad de piezas de información de atributos sobre una pluralidad de puntos tridimensionales incluidos en datos de nube de puntos a partir de la pluralidad de valores de coeficiente (S7097).
[1281] Con tal configuración, el dispositivo de decodificación de datos tridimensionales puede cambiar el parámetro de cuantización para cada capa y, por lo tanto, puede realizar apropiadamente la decodificación. Además, el dispositivo de decodificación de datos tridimensionales puede decodificar apropiadamente el flujo de bits codificado con una eficiencia de codificación mejorada utilizando la primera información que indica un parámetro de cuantización de referencia y la pluralidad de piezas de segunda información para calcular una pluralidad de parámetros de cuantización a partir del parámetro de cuantización de referencia.
[1282] Por ejemplo, cada una de la pluralidad de piezas de segunda información indica la diferencia entre el parámetro de cuantización de referencia y el parámetro de cuantización para la capa.
[1283] Por ejemplo, el flujo de bits incluye además un primer indicador (delta_Layer_present_flag) que indica si la pluralidad de piezas de segunda información está incluida o no en el flujo de bits.
[1284] Por ejemplo, el flujo de bits incluye además tercera información (tal como NumLayer) que indica el número de la pluralidad de piezas de segunda información incluidas en el flujo de bits.
[1285] Por ejemplo, la pluralidad de puntos tridimensionales se clasifica en cualquiera de una pluralidad de capas (tales como los LoD) basándose en la información geométrica sobre la pluralidad de puntos tridimensionales. Por ejemplo, la pluralidad de valores de coeficiente se genera clasificando cada una de la pluralidad de piezas de información de atributos en un componente de frecuencia más alta y un componente de frecuencia más baja para clasificarse en cualquiera de las capas (tales como capas RAHT).
[1286] Por ejemplo, el dispositivo de decodificación de datos tridimensionales incluye un procesador y una memoria, y el procesador realiza el proceso descrito anteriormente utilizando la memoria.
[1287] Realización 14
[1288] En esta realización, se describirá un método de generación de capas LoD. La FIG.161 es un diagrama que muestra un ejemplo de la generación de capas LoD. La FIG.161 muestra un método de generación de LoD utilizando una estructura de árbol binario en el caso en que el número N de puntos tridimensionales es 16. En primer lugar, el dispositivo de codificación de datos tridimensionales divide una pluralidad de puntos tridimensionales en node[0] utilizando un valor (coordenada geométrica) sobre el eje α. Aquí, el eje α es un eje x, un eje y o un eje z, por ejemplo. Específicamente, el dispositivo de codificación de datos tridimensionales puede calcular una mediana (median[0]) de valores sobre el eje α de puntos tridimensionales, y dividir los puntos tridimensionales utilizando median[0]. Por ejemplo, el dispositivo de codificación de datos tridimensionales divide una pluralidad de puntos tridimensionales en node[0] en grupo A y grupo B, incluyendo el grupo A puntos tridimensionales cuyos valores sobre el eje α son iguales o menores que median[0], incluyendo el grupo B puntos tridimensionales cuyos valores sobre el eje α son mayores que median[0], y asigna el grupo A a node[1] y el grupo B a node[2]. De esta manera, una pluralidad de puntos tridimensionales en node[0] puede dividirse sustancialmente de manera uniforme.
[1289] El dispositivo de codificación de datos tridimensionales puede calcular un valor promedio (mean[0]) de valores sobre el eje α de puntos tridimensionales en node[0], y asignar el punto tridimensional i que tiene un valor sobre el eje α más cercano al valor de mean[0] a LoD0. De esta manera, los puntos tridimensionales que están relativamente cerca de la pluralidad de puntos tridimensionales en node[0] pueden asignarse a LoD0, de modo que la precisión de predicción del valor de atributo de cada punto tridimensional puede mejorarse.
[1290] Al igual que con node[0], una pluralidad de puntos tridimensionales incluidos en cada uno de node[1] y node[2] se dividen utilizando un valor sobre el eje β. Aquí, el eje α y el eje β pueden ser iguales o diferentes. El dispositivo de codificación de datos tridimensionales calcula una mediana (median[1]) de valores sobre el eje β de puntos tridimensionales en node[1] y una mediana (median[2]) sobre el eje β de puntos tridimensionales en node[2]. El dispositivo de codificación de datos tridimensionales divide node[1] en node[3] y node[4] utilizando median[1]. El dispositivo de codificación de datos tridimensionales divide node[2] en node[5] y node[6] utilizando median[2].
[1291] El dispositivo de codificación de datos tridimensionales calcula valores promedio (mean[1] y mean[2]) de valores sobre el eje β de puntos tridimensionales en node[1] y node[2], respectivamente, y asigna puntos tridimensionales e y m que tienen valores sobre el eje β más cercanos a los valores promedio respectivos a LoD1.
[1292] El dispositivo de codificación de datos tridimensionales calcula medias de node[3] a node[6] de la misma manera que para node[0], node[1] y node[2], y asigna puntos tridimensionales c, f, j y n que tienen valores más cercanos a los valores medios respectivos a LoD2. El dispositivo de codificación de datos tridimensionales asigna puntos tridimensionales que no se han asignado a ninguno de LoD0 a LoD2 a LoD3. De esta manera, el dispositivo de codificación de datos tridimensionales puede asignar todos los puntos tridimensionales a un LoD.
[1293] Cuando cada punto tridimensional en un nodo tiene información geométrica (x, y, z), el dispositivo de codificación de datos tridimensionales determina cuál de los ejes x, y y z va a utilizarse para la división de puntos tridimensionales en el nodo. Por ejemplo, el dispositivo de codificación de datos tridimensionales calcula una varianza sobre cada eje de puntos tridimensionales en un nodo, y divide los puntos tridimensionales utilizando el eje cuya varianza es la mayor. De esta manera, el dispositivo de codificación de datos tridimensionales puede dividir apropiadamente puntos tridimensionales en un nodo de acuerdo con las
características de los mismos. Debe observarse que el dispositivo de codificación de datos tridimensionales puede cambiar el eje utilizado para la división para cada nodo. De esta manera, el dispositivo de codificación de datos tridimensionales puede realizar apropiadamente la división de acuerdo con las características de los puntos tridimensionales en cada nodo.
[1294] De acuerdo con el método descrito anteriormente, los puntos tridimensionales que están cerca entre sí en promedio pueden asignarse a los LoD superiores, de modo que la precisión de predicción de información de atributos utilizando los LoD puede aumentarse, y la eficiencia de codificación puede mejorarse.
[1295] Aquí, cuando se codifica un valor de atributo de un punto tridimensional utilizando un árbol binario, el dispositivo de codificación de datos tridimensionales puede calcular el valor btDepth que indica hasta qué capa va a realizarse la división desde node[0], que es un nodo raíz, de acuerdo con la siguiente fórmula (Ecuación L1) o (Ecuación L2).
[1298]
[1300] Aquí, N representa el número de puntos tridimensionales, y arriba representa un parámetro de control. Por ejemplo, es posible que arriba = 1. Cambiando el valor de up, puede controlarse hasta qué capa en el árbol binario van a dividirse los puntos tridimensionales. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir el valor de up al flujo de bits. De esta manera, el dispositivo de decodificación de datos tridimensionales puede realizar la división hasta la misma capa que en la codificación y, por lo tanto, puede decodificar apropiadamente el flujo de bits.
[1301] Debe observarse que redondo(x) en (Ecuación L1) es una función que devuelve un valor obtenido redondeando el valor x. max (x, y) es una función que devuelve el mayor valor de los valores x e y. Es decir, btDepth es 0 (recortado a un valor de 0) cuando el valor de log2(redondo(N/2))-arriba es negativo.
[1302] La FIG.162 a la FIG.166 son diagramas que muestran ejemplos de la división de capas. Como se muestra en la FIG.162, cuando N = 8, y arriba = 1, la división se realiza hasta btDepth = 1. Como se muestra en la FIG.
[1303] 163, cuando N = 8, y arriba = 0, la división se realiza hasta btDepth = 2.
[1304] Recortando el valor mínimo de btDepth a 0, el dispositivo de codificación de datos tridimensionales puede generar apropiadamente los LoD incluso cuando N es igual o menor que 2. Como se muestra en la FIG.164, cuando N = 2, y arriba = 1, la división se realiza hasta btDepth = 0. En el ejemplo mostrado en la FIG. 164, node[0] incluye dos puntos. El dispositivo de codificación de datos tridimensionales puede asignar uno de estos dos puntos que está más cerca de un valor promedio a LoD0, y asignar el otro punto a LoD1.
[1305] Como se muestra en la FIG. 165, cuando N = 1, y arriba = 0, la división se realiza hasta btDepth = 0. En el ejemplo mostrado en la FIG. 165, node[0] incluye un punto. El dispositivo de codificación de datos tridimensionales asigna el punto a LoD0.
[1306] Debe observarse que, aunque en esta realización se ha mostrado un ejemplo en el que, recortando el valor mínimo de btDepth a 0, los puntos tridimensionales se asignan apropiadamente a los LoD incluso cuando N es igual o menor que 2, la presente divulgación no se limita necesariamente a ello. Por ejemplo, cuando N es igual o menor que 2, el dispositivo de codificación de datos tridimensionales no necesita aplicar la generación de LoD utilizando un árbol binario. Alternativamente, cuando N es igual o menor que 2, el dispositivo de codificación de datos tridimensionales puede asignar los dos puntos a LoD0. Alternativamente, cuando N es igual o menor que 2, el dispositivo de codificación de datos tridimensionales puede generar los LoD asignando uno de los puntos tridimensionales a LoD0 y asignando el otro punto tridimensional a LoD1. Alternativamente, cuando N es igual o menor que 2, el dispositivo de codificación de datos tridimensionales puede establecer el valor de btDepth para que sea 0 estableciendo arriba = 0.
[1307] Aunque en esta realización se ha mostrado un ejemplo en el que se asignan puntos tridimensionales a los LoD para cada capa btDepth, la presente divulgación no se limita necesariamente a ello. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede asignar puntos tridimensionales a los LoD para un btDepth particular. Por ejemplo, el dispositivo de codificación de datos tridimensionales puede asignar puntos tridimensionales a los LoD cuando el valor de btDepth es par, y omitir la asignación de LoD cuando el valor es impar. Alternativamente, el dispositivo de codificación de datos tridimensionales puede asignar puntos tridimensionales a los LoD cuando el valor de btDepth es impar, y omitir la asignación de LoD cuando el valor es par. De esta manera, el dispositivo de codificación de datos tridimensionales no tiene que determinar un valor promedio y buscar un punto tridimensional que tenga un valor cercano al valor promedio para cada capa, la cantidad de procesamiento puede reducirse.
[1308] Por ejemplo, como se muestra en la FIG.166, cuando N = 16, y arriba = 1, la división se realiza hasta btDepth = 2. Para btDepth = 0, btDepth es par, y el dispositivo de codificación de datos tridimensionales asigna un punto
tridimensional que tiene un valor cercano al valor promedio para node[0] a LoD0. Para btDepth = 1, btDepth es impar, y el dispositivo de codificación de datos tridimensionales omite la asignación. Para btDepth = 2, btDepth es par, y el dispositivo de codificación de datos tridimensionales asigna un punto tridimensional que tiene un valor cercano al valor promedio a cada nodo a LoD1. El dispositivo de codificación de datos tridimensionales asigna cualquier punto tridimensional que no se haya asignado a ninguno de LoD0 y LoD1 a LoD2.
[1309] La FIG.167 es un diagrama de flujo de un proceso de codificación de datos tridimensionales de acuerdo con esta realización. En primer lugar, el dispositivo de codificación de datos tridimensionales codifica información geométrica (geometría) (S7101). Por ejemplo, el dispositivo de codificación de datos tridimensionales realiza la codificación utilizando una representación de octree.
[1310] El dispositivo de codificación de datos tridimensionales luego transforma información de atributos (S7102). Por ejemplo, después de la codificación de la información geométrica, si la posición de un punto tridimensional cambia debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales reasigna la información de atributos sobre el punto tridimensional original al punto tridimensional cambiado en posición. Debe observarse que el dispositivo de codificación de datos tridimensionales puede realizar la reasignación por interpolación de valores de la información de atributos de acuerdo con la cantidad de cambio en posición. Por ejemplo, el dispositivo de codificación de datos tridimensionales detecta N puntos tridimensionales aún no cambiados en posición cerca de la posición tridimensional del punto tridimensional cambiado en posición, toma un promedio ponderado de los valores de la información de atributos sobre los N puntos tridimensionales basándose en la distancia entre las posiciones tridimensionales del punto tridimensional cambiado en posición y cada uno de los N puntos tridimensionales, y determina el valor resultante como el valor de la información de atributos sobre el punto tridimensional cambiado en posición. Si las posiciones tridimensionales de dos o más puntos tridimensionales cambian a la misma posición tridimensional debido a cuantización o similar, el dispositivo de codificación de datos tridimensionales puede asignar un valor promedio de la información de atributos sobre los dos o más puntos tridimensionales aún no cambiados en posición como el valor de la información de atributos sobre los puntos tridimensionales cambiados en posición.
[1311] El dispositivo de codificación de datos tridimensionales luego codifica la información de atributos (S7103). Cuando el dispositivo de codificación de datos tridimensionales codifica una pluralidad de piezas de información de atributos, por ejemplo, el dispositivo de codificación de datos tridimensionales puede codificar secuencialmente la pluralidad de piezas de información de atributos. Por ejemplo, cuando el dispositivo de codificación de datos tridimensionales codifica color y reflectancia como información de atributos, el dispositivo de codificación de datos tridimensionales genera un flujo de bits que incluye el resultado de codificación de color seguido por el resultado de codificación de reflectancia. Debe observarse que la pluralidad de resultados de codificación de información de atributos puede incluirse en el flujo de bits en cualquier orden.
[1312] El dispositivo de codificación de datos tridimensionales puede añadir información que indica un punto de inicio de los datos codificados de cada información de atributos en el flujo de bits al encabezado o similar. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente información de atributos que necesita decodificarse, y por lo tanto puede omitir el proceso de decodificación para información de atributos que no necesita decodificarse. Por lo tanto, la cantidad de procesamiento del dispositivo de decodificación de datos tridimensionales puede reducirse. El dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos en paralelo, e integrar los resultados de la codificación en un flujo de bits. De esta manera, el dispositivo de codificación de datos tridimensionales puede codificar una pluralidad de piezas de información de atributos a alta velocidad.
[1313] La FIG.168 es un diagrama de flujo del proceso de codificación de información de atributos (S7103). En primer lugar, el dispositivo de codificación de datos tridimensionales establece un LoD (S7111). Es decir, el dispositivo de codificación de datos tridimensionales asigna cada punto tridimensional a cualquiera de una pluralidad de los LoD.
[1314] El dispositivo de codificación de datos tridimensionales luego inicia un bucle sobre una base de LoD (S7112). Es decir, el dispositivo de codificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7113 hasta la etapa S7121 para cada LoD.
[1315] El dispositivo de codificación de datos tridimensionales luego inicia un bucle sobre una base de un punto tridimensional (S7113). Es decir, el dispositivo de codificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7114 hasta la etapa S7120 para cada punto tridimensional.
[1316] En primer lugar, el dispositivo de codificación de datos tridimensionales busca una pluralidad de puntos periféricos, que son puntos tridimensionales presentes en la periferia del punto tridimensional actual, que van a utilizarse para el cálculo de un valor predicho del punto tridimensional actual que va a procesarse (S7114). El dispositivo de codificación de datos tridimensionales luego calcula un promedio ponderado de valores de la información de atributos sobre la pluralidad de puntos periféricos, y establece el valor obtenido como valor predicho P (S7115). El dispositivo de codificación de datos tridimensionales luego calcula un residual de predicción, que es la diferencia entre la información de atributos y el valor predicho del punto tridimensional
actual (S7116). El dispositivo de codificación de datos tridimensionales luego calcula un valor cuantizado cuantizando el residual de predicción (S7117). El dispositivo de codificación de datos tridimensionales luego codifica aritméticamente el valor cuantizado (S7118).
[1317] El dispositivo de codificación de datos tridimensionales luego calcula un valor cuantizado inverso cuantizando inversamente el valor cuantizado (S7119). El dispositivo de codificación de datos tridimensionales luego genera un valor decodificado añadiendo el valor predicho al valor cuantizado inversamente (S7120). El dispositivo de codificación de datos tridimensionales luego termina el bucle sobre una base de un punto tridimensional (S7121). El dispositivo de codificación de datos tridimensionales también termina el bucle sobre una base de LoD (S7122).
[1318] La FIG. 169 es un diagrama de flujo del proceso de establecimiento de LoD (S7111). En primer lugar, el dispositivo de codificación de datos tridimensionales calcula btDepth a partir del número N de puntos tridimensionales (S7131). Por ejemplo, el dispositivo de codificación de datos tridimensionales calcula btDepth de acuerdo con (Ecuación L1) o (Ecuación L2) descritas anteriormente. Debe observarse que cuando el número N de puntos tridimensionales es igual o menor que cierto valor, el dispositivo de codificación de datos tridimensionales no necesita realizar la generación de LoD utilizando un árbol binario. Por ejemplo, cuando N es igual o menor que 2, el dispositivo de codificación de datos tridimensionales puede asignar N puntos tridimensionales a LoD0. De esta manera, la velocidad del proceso de generación de LoD puede aumentarse en el caso en que N es igual o menor que cierto valor.
[1319] El dispositivo de codificación de datos tridimensionales luego establece profundidad = 0 (S7132). El dispositivo de codificación de datos tridimensionales luego establece num_node = 1 << profundidad (S7133). El dispositivo de codificación de datos tridimensionales luego establece n = 0 (S7134). El dispositivo de codificación de datos tridimensionales luego determina el n-ésimo nodo A en una profundidad-ésima capa como un nodo que va a procesarse (S7135).
[1320] El dispositivo de codificación de datos tridimensionales luego determina el eje de división α para puntos tridimensionales incluidos en nodo A (S7136). Por ejemplo, cuando los puntos tridimensionales tienen coordenadas sobre tres ejes (x, y, z), el dispositivo de codificación de datos tridimensionales calcula una varianza de los puntos tridimensionales sobre cada eje, y determina el eje cuya varianza es la mayor como eje de división α. De esta manera, los puntos tridimensionales pueden dividirse eficientemente.
[1321] El dispositivo de codificación de datos tridimensionales luego calcula un valor promedio de valores sobre el eje α de los puntos tridimensionales incluidos en nodo A (S7137). El dispositivo de codificación de datos tridimensionales luego extrae un punto tridimensional que tiene un valor sobre el eje α más cercano al valor promedio para nodo A de los puntos tridimensionales en nodo A, y añade el punto tridimensional extraído al LoD correspondiente a la profundidad-ésima capa (S7138).
[1322] El dispositivo de codificación de datos tridimensionales luego calcula una mediana de valores sobre el eje α de los puntos tridimensionales incluidos en nodo A, divide los puntos tridimensionales en nodo A utilizando la mediana, y asigna los puntos tridimensionales divididos a dos nodos en la depth+1-ésima capa (S7139). El dispositivo de codificación de datos tridimensionales luego establece n = n+1 (S7140).
[1323] Cuando se cumple la relación n < num_node (si Sí en S7141), el dispositivo de codificación de datos tridimensionales realiza nuevamente la etapa S7135 y el siguiente proceso.
[1324] Cuando no se cumple la relación n < num_node (si No en S7141), el dispositivo de codificación de datos tridimensionales establece profundidad = profundidad 1 (S7142). Cuando no se cumple la relación profundidad = = btDepth (si No en S7143), el dispositivo de codificación de datos tridimensionales realiza nuevamente la etapa S7133 y el siguiente proceso.
[1325] Cuando se cumple la relación profundidad = = btDepth (si Sí en S7143), el dispositivo de codificación de datos tridimensionales asigna cualquier punto tridimensional que no se haya asignado a un LoD de cada profundidad a un LoD en la capa más baja (S7144).
[1326] La FIG.170 es un diagrama de flujo de un proceso de decodificación de datos tridimensionales de acuerdo con esta realización. En primer lugar, el dispositivo de decodificación de datos tridimensionales decodifica información geométrica (geometría) desde el flujo de bits (S7151). Por ejemplo, el dispositivo de decodificación de datos tridimensionales realiza la decodificación utilizando una representación de octree.
[1327] El dispositivo de decodificación de datos tridimensionales luego decodifica información de atributos desde el flujo de bits (S7152). Por ejemplo, cuando el dispositivo de decodificación de datos tridimensionales decodifica una pluralidad de piezas de información de atributos, el dispositivo de decodificación de datos tridimensionales puede decodificar secuencialmente la pluralidad de piezas de información de atributos. Por ejemplo, cuando el dispositivo de decodificación de datos tridimensionales decodifica color y reflectancia como información de atributos, el dispositivo de decodificación de datos tridimensionales decodifica el resultado de codificación de color y el resultado de codificación de reflectancia en el orden de los mismos en el flujo de bits. Por ejemplo, si
el resultado de codificación de color va seguido por el resultado de codificación de reflectancia en el flujo de bits, el dispositivo de decodificación de datos tridimensionales primero decodifica el resultado de codificación de color y luego decodifica el resultado de codificación de reflectancia. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede decodificar el resultado de codificación de información de atributos en el flujo de bits en cualquier orden.
[1328] El dispositivo de decodificación de datos tridimensionales puede obtener la información que indica el punto de inicio de los datos codificados de cada pieza de información de atributos en el flujo de bits decodificando el encabezado o similar. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar selectivamente información de atributos que necesita decodificarse, y por lo tanto puede omitir el proceso de decodificación para información de atributos que no necesita decodificarse. Por lo tanto, la cantidad de procesamiento del dispositivo de decodificación de datos tridimensionales puede reducirse. El dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos en paralelo, e integrar los resultados de la decodificación en una nube de puntos tridimensional. De esta manera, el dispositivo de decodificación de datos tridimensionales puede decodificar una pluralidad de piezas de información de atributos a alta velocidad.
[1329] La FIG. 171 es un diagrama de flujo del proceso de decodificación de información de atributos (S7152). En primer lugar, el dispositivo de decodificación de datos tridimensionales establece un LoD (S7161). Es decir, el dispositivo de decodificación de datos tridimensionales asigna cada uno de una pluralidad de puntos tridimensionales que tienen información geométrica decodificada a cualquiera de una pluralidad de los LoD. Por ejemplo, el método de la asignación es el mismo que el método de asignación utilizado en el dispositivo de codificación de datos tridimensionales mostrado en la FIG.169.
[1330] El dispositivo de decodificación de datos tridimensionales luego inicia un bucle sobre una base de LoD (S7162). Es decir, el dispositivo de decodificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7163 hasta la etapa S7169 para cada LoD.
[1331] El dispositivo de decodificación de datos tridimensionales luego inicia un bucle sobre una base de un punto tridimensional (S7163). Es decir, el dispositivo de decodificación de datos tridimensionales realiza repetidamente el proceso desde la etapa S7164 hasta la etapa S7168 para cada punto tridimensional.
[1332] En primer lugar, el dispositivo de decodificación de datos tridimensionales busca una pluralidad de puntos periféricos, que son puntos tridimensionales presentes en la periferia del punto tridimensional actual, que van a utilizarse para el cálculo de un valor predicho del punto tridimensional actual que va a procesarse (S7164). El dispositivo de decodificación de datos tridimensionales luego calcula un promedio ponderado de valores de la información de atributos sobre la pluralidad de puntos periféricos, y establece el valor obtenido como valor predicho P (S7165). Debe observarse que estos procesamientos son los mismos que aquellos en el dispositivo de codificación de datos tridimensionales.
[1333] El dispositivo de decodificación de datos tridimensionales luego decodifica aritméticamente el valor cuantizado desde el flujo de bits (S7166). El dispositivo de decodificación de datos tridimensionales luego calcula un valor cuantizado inverso cuantizando inversamente el valor cuantizado decodificado (S7167). El dispositivo de decodificación de datos tridimensionales luego genera un valor decodificado añadiendo el valor predicho al valor cuantizado inversamente (S7168). El dispositivo de decodificación de datos tridimensionales luego termina el bucle sobre una base de un punto tridimensional (S7169). El dispositivo de decodificación de datos tridimensionales también termina el bucle sobre una base de LoD (S7170).
[1334] La FIG. 172 es un diagrama de bloques del codificador de información de atributos 7100 incluido en el dispositivo de codificación de datos tridimensionales. El codificador de información de atributos 7100 incluye establecedor de LoD 7101, buscador 7102, predictor 7103, sustractor 7104, cuantizador 7105, cuantizador inverso 7106, reconstructor 7107 y memoria 7108.
[1335] El establecedor de LoD 7101 genera un LoD utilizando información geométrica sobre un punto tridimensional. Por ejemplo, utilizando un indicador (indicador de conmutación) o similar, el establecedor de LoD 7101 puede conmutar entre el método de generación de LoD que utiliza información de distancia sobre puntos tridimensionales y el método de generación de LoD que utiliza un árbol binario descrito en esta realización. Aquí, el método de generación de LoD que utiliza información de distancia sobre puntos tridimensionales es un método de establecer un umbral de distancia para cada capa y generar una estructura jerárquica de tal manera que las distancias entre una pluralidad de puntos tridimensionales incluidos en cada capa sean iguales o mayores que el umbral para la capa. Específicamente, cuanto más baja sea la capa, menor será el umbral. Por lo tanto, cuanto más baja sea la capa, mayor será la densidad de los puntos tridimensionales dispuestos. Debe observarse que el dispositivo de codificación de datos tridimensionales puede añadir el indicador de conmutación al encabezado. De esta manera, el dispositivo de decodificación de datos tridimensionales puede conmutar el método de generación de LoD decodificando el indicador de conmutación añadido al encabezado, y por lo tanto puede decodificar apropiadamente el flujo de bits. Debe observarse que el dispositivo de
codificación de datos tridimensionales no necesita añadir el indicador de conmutación al encabezado, y qué método va a utilizarse puede estar prescrito por un perfil, un nivel o similar de una norma. En ese caso, la cantidad de código del encabezado puede reducirse.
[1336] El buscador 7102 busca un punto tridimensional vecino de cada punto tridimensional utilizando un resultado de generación de LoD e información de distancia entre puntos tridimensionales. El predictor 7103 genera un valor predicho de información de atributos de un punto tridimensional actual. El predictor 7103 también asigna un valor predicho a una pluralidad de modos de predicción 0 a M-1, y selecciona un modo de predicción que va a utilizarse de entre la pluralidad de modos de predicción.
[1337] El sustractor 7104 genera un residual de predicción restando el valor predicho de la información de atributos. El cuantizador 7105 cuantiza el residual de predicción de la información de atributos. El cuantizador inverso 7106 cuantiza inversamente el residual de predicción cuantizado. El reconstructor 7107 genera un valor decodificado sumando el valor predicho y el residual de predicción cuantizado inversamente. La memoria 7108 almacena el valor (valor decodificado) de la información de atributos decodificada sobre cada punto tridimensional. La información de atributos decodificada sobre los puntos tridimensionales almacenados en la memoria 7108 se utiliza para la predicción de un punto tridimensional aún no codificado por el predictor 7103. El codificador aritmético 7109 calcula ZeroCnt a partir del residual de predicción cuantizado, y codifica aritméticamente ZeroCnt. El codificador aritmético 7109 también codifica aritméticamente cualquier residual de predicción cuantizado que no sea cero. El codificador aritmético 7109 puede binarizar el residual de predicción antes de la codificación aritmética. El codificador aritmético 7069 puede generar y codificar diversos tipos de información de encabezado. El codificador aritmético 7109 puede codificar aritméticamente información de modo de predicción (PredMode) que indica el modo de predicción utilizado para la codificación por el predictor 7103, y añadir la información al flujo de bits.
[1338] La FIG. 173 es un diagrama de bloques del decodificador de información de atributos 7110 incluido en el dispositivo de decodificación de datos tridimensionales. El decodificador de información de atributos 7110 incluye decodificador aritmético 7111, establecedor de LoD 7112, buscador 7113, predictor 7114, cuantizador inverso 7115, reconstructor 7116 y memoria 7117.
[1339] El decodificador aritmético 7111 decodifica aritméticamente ZeroCnt y el residual de predicción incluidos en el flujo de bits. El decodificador aritmético 7111 también decodifica diversos tipos de información de encabezado. El decodificador aritmético 7111 también decodifica aritméticamente información de modo de predicción (PredMode) desde el flujo de bits, y emite la información de modo de predicción obtenida al predictor 7114. El establecedor de LoD 7112 genera un LoD utilizando información geométrica decodificada sobre un punto tridimensional. Por ejemplo, el establecedor de LoD 7112 puede decodificar el indicador (indicador de conmutación) o similar que indica cuál de entre el método de generación de LoD que utiliza información de distancia sobre puntos tridimensionales y el método de generación de LoD que utiliza un árbol binario descrito en esta realización se ha utilizado, generar un LoD en el método indicado por el indicador de conmutación. Debe observarse que el dispositivo de decodificación de datos tridimensionales puede utilizar un método de generación de LoD prescrito por un perfil, un nivel o similar de una norma.
[1340] El buscador 7113 busca un punto tridimensional vecino de cada punto tridimensional utilizando un resultado de generación de LoD e información de distancia entre puntos tridimensionales. El predictor 7114 genera un valor predicho de información de atributos de un punto tridimensional actual que va a decodificarse. El cuantizador inverso 7115 cuantiza inversamente el residual de predicción decodificado aritméticamente. El reconstructor 7116 genera un valor decodificado sumando el valor predicho y el residual de predicción cuantizado inversamente. La memoria 7117 almacena el valor (valor decodificado) de la información de atributos decodificada sobre cada punto tridimensional. La información de atributos decodificada sobre los puntos tridimensionales almacenados en la memoria 7117 se utiliza para la predicción de un punto tridimensional aún no decodificado por el predictor 7114.
[1341] Un dispositivo de codificación de datos tridimensionales, un dispositivo de decodificación de datos tridimensionales y similares de acuerdo con las realizaciones de la presente divulgación se han descrito anteriormente, pero la presente divulgación no se limita a estas realizaciones.
[1342] Debe observarse que cada uno de los procesadores incluidos en el dispositivo de codificación de datos tridimensionales, el dispositivo de decodificación de datos tridimensionales y similares de acuerdo con las realizaciones anteriores se implementa típicamente como un circuito integrado a gran escala (LSI), que es un circuito integrado (IC). Estos pueden tomar la forma de chips individuales, o pueden estar parcial o totalmente empaquetados en un único chip.
[1343] Tal IC no se limita a un LSI, y por lo tanto puede implementarse como un circuito dedicado o un procesador de propósito general. Alternativamente, puede emplearse una matriz de puertas programables en campo (FPGA) que permite programación después de la fabricación de un LSI, o un procesador reconfigurable que permite la reconfiguración de la conexión y el ajuste de celdas de circuito dentro de un LSI.
[1344] Además, en las realizaciones anteriores, los componentes estructurales pueden implementarse como hardware dedicado o pueden realizarse ejecutando un programa de software adecuado para tales componentes estructurales. Alternativamente, los componentes estructurales pueden implementarse mediante un ejecutor de programa tal como una CPU o un procesador que lee y ejecuta el programa de software registrado en un medio de grabación tal como un disco duro o una memoria de semiconductor.
[1345] La presente divulgación también puede implementarse como un método de codificación de datos tridimensionales, un método de decodificación de datos tridimensionales, o similar ejecutado por el dispositivo de codificación de datos tridimensionales, el dispositivo de decodificación de datos tridimensionales y similares. Además, las divisiones de los bloques funcionales mostrados en los diagramas de bloques son meros ejemplos, y por lo tanto una pluralidad de bloques funcionales puede implementarse como un único bloque funcional, o un único bloque funcional puede dividirse en una pluralidad de bloques funcionales, o una o más funciones pueden moverse a otro bloque funcional. Además, las funciones de una pluralidad de bloques funcionales que tienen funciones similares pueden procesarse mediante hardware o software único de una manera paralelizada o dividida en el tiempo.
[1346] Además, el orden de procesamiento de ejecución de las etapas mostradas en los diagramas de flujo es una mera ilustración para describir específicamente la presente divulgación, y por lo tanto puede ser un orden distinto del orden mostrado. Además, una o más de las etapas pueden ejecutarse simultáneamente (en paralelo) con otra etapa.
[1347] Un dispositivo de codificación de datos tridimensionales, un dispositivo de decodificación de datos tridimensionales y similares de acuerdo con uno o más aspectos se han descrito anteriormente basándose en las realizaciones, pero la presente divulgación no se limita a estas realizaciones. Por lo tanto, el uno o más aspectos pueden incluir formas logradas realizando diversas modificaciones a las realizaciones anteriores que pueden ser concebidas por los expertos en la técnica, así como formas logradas combinando componentes estructurales en diferentes realizaciones.
[1348] Aplicabilidad industrial
[1349] La presente divulgación es aplicable a un dispositivo de codificación de datos tridimensionales y a un dispositivo de decodificación de datos tridimensionales.
[1350] Signos de referencia en los dibujos
[1351] 100, 400 dispositivo de codificación de datos tridimensionales
[1352] 101, 201, 401, 501 obtenedor
[1353] 102, 402 determinador de región de codificación
[1354] 103 divisor
[1355] 104, 644 codificador
[1356] 111 datos tridimensionales
[1357] 112, 211, 413, 414, 511, 634 datos tridimensionales codificados
[1358] 200, 500 dispositivo de decodificación de datos tridimensionales
[1359] 202 determinador de GOS de inicio de decodificación
[1360] 203 determinador de SPC de decodificación
[1361] 204, 625 decodificador
[1362] 212, 512, 513 datos tridimensionales decodificados
[1363] 403 extractor de SWLD
[1364] 404 codificador WLD
[1365] 405 codificador SWLD
[1366] 411 datos tridimensionales de entrada
[1367] 412 datos tridimensionales extraídos
[1368] 502 analizador de encabezado
[1369] 503 decodificador WLD
[1370] 504 decodificador SWLD
[1371] 620, 620A dispositivo de creación de datos tridimensionales
[1372] 621, 641 creador de datos tridimensionales
[1373] 622 determinador de intervalo de solicitud
[1374] 623 buscador
[1375] 624, 642 receptor
[1376] 626 fusionador
[1377] 631, 651 información de sensor
[1378] 632 primeros datos tridimensionales
[1379] 633 información de intervalo de solicitud
[1380] 635 segundos datos tridimensionales
[1381] 636 terceros datos tridimensionales
[1382] 640 dispositivo de transmisión de datos tridimensionales
[1383] 643 extractor
[1384] 645 transmisor
[1385] 652 quintos datos tridimensionales
[1386] 654 sextos datos tridimensionales
[1387] 700 dispositivo de procesamiento de información tridimensional
[1388] 701 obtenedor de mapa tridimensional
[1389] 702 obtenedor de datos autodetectados
[1390] 703 unidad de determinación de caso anómalo
[1391] 704 determinador de operación de respuesta
[1392] 705 controlador de operación
[1393] 711 mapa tridimensional
[1394] 712 datos tridimensionales autodetectados
[1395] 810 dispositivo de creación de datos tridimensionales
[1396] 811 receptor de datos
[1397] 812, 819 unidad de comunicación
[1398] 813 controlador de recepción
[1399] 814, 821 convertidor de formato
[1400] 815 sensor
[1401] 816 creador de datos tridimensionales
[1402] 817 sintetizador de datos tridimensionales
[1403] 818 almacenamiento de datos tridimensionales
[1404] 820 controlador de transmisión
[1405] 822 transmisor de datos
[1406] 831, 832, 834, 835, 836, 837 datos tridimensionales
[1407] 833 información de sensor
[1408] 901 servidor
[1409] 902, 902A, 902B, 902C dispositivo cliente
[1410] 1011, 1111 receptor de datos
[1411] 1012, 1020, 1112, 1120 unidad de comunicación
[1412] 1013, 1113 controlador de recepción
[1413] 1014, 1019, 1114, 1119 convertidor de formato
[1414] 1015 sensor
[1415] 1016, 1116 creador de datos tridimensionales
[1416] 1017 procesador de imágenes tridimensionales
[1417] 1018, 1118 almacenamiento de datos tridimensionales
[1418] 1021, 1121 controlador de transmisión
[1419] 1022, 1122 transmisor de datos
[1420] 1031, 1032, 1135 mapa tridimensional
[1421] 1033, 1037, 1132 información de sensor
[1422] 1034, 1035, 1134 datos tridimensionales
[1423] 1117 fusionador de datos tridimensionales
[1424] 1201 procesador de compresión/decodificación de mapa tridimensional 1202 procesador de compresión/decodificación de información de sensor 1211 procesador de decodificación de mapa tridimensional
[1425] 1212 procesador de compresión de información de sensor
[1426] 1300 dispositivo de codificación de datos tridimensionales
[1427] 1301 divisor
[1428] 1302 sustractor
[1429] 1303 transformador
[1430] 1304 cuantizador
[1431] 1305, 1402 cuantizador inverso
[1432] 1306, 1403 transformador inverso
[1433] 1307, 1404 sumador
[1434] 1308, 1405 memoria de volumen de referencia
[1435] 1309, 1406 predictor intra
[1436] 1310, 1407 memoria de espacio de referencia
[1437] 1311, 1408 predictor inter
[1438] 1312, 1409 controlador de predicción
[1439] 1313 codificador entrópico
[1440] 1400 dispositivo de decodificación de datos tridimensionales
[1441] 1401 decodificador entrópico
[1442] 3000 dispositivo de codificación de datos tridimensionales
[1443] 3001 codificador de información geométrica
[1444] 3002 reasignador de información de atributos
[1445] 3003 codificador de información de atributos
[1446] 3010 dispositivo de decodificación de datos tridimensionales
[1447] 3011 decodificador de información geométrica
[1448] 3012 decodificador de información de atributos
[1449] 5300 primer codificador
[1450] 5301 divisor
[1451] 5302 codificador de información geométrica
[1452] 5303 codificador de información de atributos
[1453] 5304 codificador de información adicional
[1454] 5305 multiplexor
[1455] 5311 divisor de mosaicos
[1456] 5312 divisor de tajadas
[1457] 5321, 5331, 5351, 5361 calculador de valor de cuantización
[1458] 5322, 5332 codificador entrópico
[1459] 5323 cuantizador
[1460] 5333 cuantizador inverso
[1461] 5340 primer decodificador
[1462] 5341 demultiplexor
[1463] 5342 decodificador de información geométrica
[1464] 5343 decodificador de información de atributos
[1465] 5344 decodificador de información adicional
[1466] 5345 combinador
[1467] 5352, 5362 decodificador entrópico
[1468] 6600 codificador de información de atributos
[1469] 6601 clasificador
[1470] 6602 transformador de Haar
[1471] 6603 cuantizador
[1472] 6604, 6612 cuantizador inverso
[1473] 6605, 6613 transformador de Haar inverso
[1474] 6606, 6614 memoria
[1475] 6607 codificador aritmético
[1476] 6610 decodificador de información de atributos
[1477] 6611 decodificador aritmético
[1478] 7001 sustractor
[1479] 7002 transformador
[1480] 7003 retenedor de matriz de transformación
[1481] 7004 cuantizador
[1482] 7005 controlador de cuantización
[1483] 7006 codificador entrópico
[1484] 7011 decodificador entrópico
[1485] 7012 cuantizador inverso
[1486] 7013 controlador de cuantización
[1487] 7014 transformador inverso
[1488] 7015 retenedor de matriz de transformación
[1489] 7016 sumador
[1490] 7020 dispositivo de codificación de datos tridimensionales
[1491] 7021 divisor
[1492] 7022 codificador de información geométrica
[1493] 7023 codificador de información de atributos
[1494] 7024 codificador de información adicional
[1495] 7025 multiplexor
[1496] 7031 divisor de mosaicos
[1497] 7032 divisor de tajadas
[1498] 7035 transformador
[1499] 7036 cuantizador
[1500] 7037 codificador entrópico
[1501] 7040 dispositivo de decodificación de datos tridimensionales
[1502] 7041 demultiplexor
[1503] 7042 decodificador de información geométrica
[1504] 7043 decodificador de información de atributos
[1505] 7044 decodificador de información adicional
[1506] 7045 combinador
[1507] 7051 decodificador entrópico
[1508] 7052 cuantizador inverso
[1509] 7053 transformador inverso
[1510] 7061, 7072 establecedor de LoD
[1511] 7062, 7073 buscador
[1512] 7063, 7074 predictor
[1513] 7064 sustractor
[1514] 7065, 7083 cuantizador
[1515] 7066, 7075, 7084, 7092 cuantizador inverso
[1516] 7067, 7076 reconstructor
[1517] 7068, 7077, 7086, 7094 memoria
[1518] 7069, 7087 codificador aritmético
[1519] 7070, 7088 calculador de ΔQP
[1520] 7071, 7091 decodificador aritmético
[1521] 7081 clasificador
[1522] 7082 transformador de Haar
[1523] 7085, 7093 transformador de Haar inverso
[1524] 7100 codificador de información de atributos
[1525] 7101, 7112 establecedor de LoD
[1526] 7102, 7113 buscador
[1527] 7103, 7114 predictor
[1528] 7104 sustractor
[1529] 7105 cuantizador
[1530] 7106, 7115 cuantizador inverso
[1531] 7107, 7116 reconstructor
[1532] 7108, 7117 memoria
[1533] 7109 codificador aritmético
[1534] 7110 decodificador de información de atributos
[1535] 7111 decodificador aritmético
Claims (12)
1. REIVINDICACIONES
1. Un método de codificación de datos tridimensionales, que comprende:
calcular (S7091) valores de coeficiente a partir de piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos;
cuantizar (S7092) individualmente los valores de coeficiente para generar valores cuantizados; y generar (S7093) un flujo de bits que incluye los valores cuantizados, en donde
cada uno de los valores de coeficiente pertenece a una de una pluralidad de capas,
en la cuantización, cada uno de los valores de coeficiente se cuantiza utilizando un parámetro de cuantización respectivo para una capa a la que pertenece el valor de coeficiente entre la pluralidad de capas, en donde cada una de la pluralidad de capas es una capa de Nivel de Detalle (LoD) o una capa de Transformación Jerárquica Adaptativa por Región (RAHT), y
caracterizado porque
el flujo de bits incluye primera información y piezas de segunda información, indicando la primera información un parámetro de cuantización de referencia, siendo las piezas de segunda información para calcular un parámetro de cuantización respectivo para cada capa de entre la pluralidad de capas a partir del parámetro de cuantización de referencia.
2. El método de codificación de datos tridimensionales de acuerdo con la reivindicación 1, en donde cada una de las piezas de segunda información indica una diferencia entre el parámetro de cuantización de referencia y un parámetro de cuantización para una capa correspondiente de entre las capas entre los parámetros de cuantización.
3. El método de codificación de datos tridimensionales de acuerdo con cualquiera de las reivindicaciones 1 o 2, en donde
el flujo de bits incluye además tercera información que indica un número total de las piezas de segunda información incluidas en el flujo de bits.
4. El método de codificación de datos tridimensionales de acuerdo con cualquiera de las reivindicaciones 1 a 3, en donde
cada uno de los puntos tridimensionales se asigna a cualquiera de las capas de acuerdo con información geométrica del punto tridimensional.
5. El método de codificación de datos tridimensionales de acuerdo con cualquiera de las reivindicaciones 1 a 3, en donde
los valores de coeficiente se generan clasificando cada una de las piezas de información de atributos en uno de un componente de frecuencia más alta y un componente de frecuencia más baja para ser asignados a las capas.
6. Un método de decodificación de datos tridimensionales,caracterizado por:
calcular (S7095) parámetros de cuantización para una pluralidad de capas, utilizando (i) primera información que indica un parámetro de cuantización de referencia y (ii) piezas de segunda información para calcular un parámetro de cuantización respectivo para cada capa de entre la pluralidad de capas a partir del parámetro de cuantización de referencia, estando la primera información y las piezas de segunda información incluidas en un flujo de bits, en donde cada una de la pluralidad de capas es una capa de nivel de detalle (LoD) o una capa de transformación jerárquica adaptativa por región (RAHT);
cuantizar inversamente (S7096) cada uno de los valores cuantizados incluidos en el flujo de bits, utilizando un parámetro de cuantización respectivo para una capa a la que pertenece el valor cuantizado entre los parámetros de cuantización calculados en el cálculo, para generar valores de coeficiente; y
calcular (S7097), a partir de los valores de coeficiente generados en la cuantización inversa, piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos.
7. El método de decodificación de datos tridimensionales de acuerdo con la reivindicación 6, en donde
cada una de las piezas de segunda información indica una diferencia entre el parámetro de cuantización de referencia y un parámetro de cuantización para una capa correspondiente de entre las capas entre los parámetros de cuantización.
8. El método de decodificación de datos tridimensionales de acuerdo con cualquiera de las reivindicaciones 6 o 7, en donde
el flujo de bits incluye además tercera información que indica un número total de las piezas de segunda información incluidas en el flujo de bits.
9. El método de decodificación de datos tridimensionales de acuerdo con cualquiera de las reivindicaciones 6 a 8, en donde
cada uno de los puntos tridimensionales se asigna a cualquiera de las capas de acuerdo con información geométrica del punto tridimensional.
10. El método de decodificación de datos tridimensionales de acuerdo con cualquiera de las reivindicaciones 6 a 9, en donde
los valores de coeficiente se generan clasificando cada una de las piezas de información de atributos en uno de un componente de frecuencia más alta y un componente de frecuencia más baja para ser asignados a las capas.
11. Un dispositivo de codificación de datos tridimensionales (7020), que comprende:
un procesador; y
una memoria,
en donde, utilizando la memoria, el procesador:
calcula valores de coeficiente a partir de piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos;
cuantiza individualmente los valores de coeficiente para generar valores cuantizados; y
genera un flujo de bits que incluye los valores cuantizados, en donde
cada uno de los valores de coeficiente pertenece a una de una pluralidad de capas,
en la cuantización, cada uno de los valores de coeficiente se cuantiza utilizando un parámetro de cuantización respectivo para una capa a la que pertenece el valor de coeficiente entre la pluralidad de capas, en donde cada una de la pluralidad de capas es una capa de nivel de detalle (LoD) o una capa de transformación jerárquica adaptativa por región (RAHT), y
caracterizado porque
el flujo de bits incluye primera información y piezas de segunda información, indicando la primera información un parámetro de cuantización de referencia, siendo las piezas de segunda información para calcular un parámetro de cuantización respectivo para cada capa de entre la pluralidad de capas a partir del parámetro de cuantización de referencia, siendo cada uno de los parámetros de cuantización dicho parámetro de cuantización.
12. Un dispositivo de decodificación de datos tridimensionales (7040), que comprende:
un procesador; y
una memoria,
caracterizado porque, al utilizar la memoria, el procesador:
calcula parámetros de cuantización para una pluralidad de capas, utilizando (i) primera información que indica un parámetro de cuantización de referencia y (ii) piezas de segunda información para calcular un parámetro de cuantización respectivo para cada capa de entre la pluralidad de capas a partir del parámetro de cuantización de referencia, estando la primera información y las piezas de segunda información incluidas en un flujo de bits, en donde cada una de la pluralidad de capas es una capa de nivel de detalle (LoD) o una capa de transformación jerárquica adaptativa por región (RAHT);
cuantiza inversamente cada uno de los valores cuantizados incluidos en el flujo de bits, utilizando un parámetro de cuantización respectivo para una capa a la que pertenece el valor cuantizado entre los parámetros de cuantización calculados en el cálculo, para generar valores de coeficiente; y
calcula, a partir de los valores de coeficiente generados en la cuantización inversa, piezas de información de atributos de puntos tridimensionales incluidos en datos de nube de puntos.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962801289P | 2019-02-05 | 2019-02-05 | |
| US201962807930P | 2019-02-20 | 2019-02-20 | |
| PCT/JP2020/004360 WO2020162495A1 (ja) | 2019-02-05 | 2020-02-05 | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3074503T3 true ES3074503T3 (en) | 2026-07-21 |
Family
ID=71947990
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES20752819T Active ES3074503T3 (en) | 2019-02-05 | 2020-02-05 | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device |
Country Status (10)
| Country | Link |
|---|---|
| US (3) | US11909992B2 (es) |
| EP (2) | EP3923242B1 (es) |
| JP (2) | JP7512209B2 (es) |
| KR (2) | KR102848120B1 (es) |
| CN (2) | CN120525973A (es) |
| BR (1) | BR112021013402A2 (es) |
| CA (1) | CA3126760A1 (es) |
| ES (1) | ES3074503T3 (es) |
| MX (2) | MX2021008910A (es) |
| WO (1) | WO2020162495A1 (es) |
Families Citing this family (35)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| IL281410B2 (en) * | 2018-09-15 | 2024-02-01 | Quantum Star Tech Inc | Bit-level data generation and artificial intelligence techniques and architectures for data protection |
| CN113728648A (zh) * | 2019-04-25 | 2021-11-30 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置 |
| JP2022539762A (ja) * | 2019-06-28 | 2022-09-13 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ処理装置及び方法 |
| JP7307260B2 (ja) * | 2019-07-03 | 2023-07-11 | エルジー エレクトロニクス インコーポレイティド | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法。 |
| CN119325005A (zh) * | 2019-10-07 | 2025-01-17 | Lg电子株式会社 | 用于点云数据的设备和方法及其存储介质 |
| WO2021141218A1 (ko) * | 2020-01-07 | 2021-07-15 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
| CN114930396A (zh) * | 2020-01-08 | 2022-08-19 | 松下电器(美国)知识产权公司 | 三维数据编码方法、三维数据解码方法、三维数据编码装置以及三维数据解码装置 |
| CN116325731A (zh) * | 2020-09-25 | 2023-06-23 | Oppo广东移动通信有限公司 | 点云编解码方法与系统、及点云编码器与点云解码器 |
| KR20230074504A (ko) | 2020-09-25 | 2023-05-30 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 포인트 클라우드 인코딩 방법, 포인트 클라우드 디코딩 방법 및 관련 장치 |
| JP7505954B2 (ja) | 2020-09-29 | 2024-06-25 | Kddi株式会社 | 点群復号装置、点群復号方法及びプログラム |
| JP7499665B2 (ja) * | 2020-09-29 | 2024-06-14 | Kddi株式会社 | 点群復号装置、点群復号方法及びプログラム |
| JP7499666B2 (ja) | 2020-09-29 | 2024-06-14 | Kddi株式会社 | 点群復号装置、点群復号方法及びプログラム |
| WO2022075326A1 (ja) * | 2020-10-07 | 2022-04-14 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
| US11769071B2 (en) * | 2020-11-30 | 2023-09-26 | IonQ, Inc. | System and method for error correction in quantum computing |
| WO2022136065A1 (en) * | 2020-12-21 | 2022-06-30 | Koninklijke Kpn N.V. | Compression of temporal data by using geometry-based point cloud compression |
| EP4261785A4 (en) * | 2020-12-22 | 2023-10-18 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | METHOD FOR CODING AND DECODING A POINT CLOUD AS WELL AS CODER AND DECODER |
| JP7495185B2 (ja) | 2020-12-25 | 2024-06-04 | Kddi株式会社 | 点群復号装置、点群復号方法及びプログラム |
| US12634517B2 (en) | 2020-12-28 | 2026-05-19 | Sony Group Corporation | Encoding apparatus and method for encoding a difference value between attribute data of a processing target and a nearby point set as a reference point |
| CN116648915A (zh) | 2020-12-31 | 2023-08-25 | Oppo广东移动通信有限公司 | 点云编解码方法、编码器、解码器以及计算机存储介质 |
| JP7552849B2 (ja) | 2021-02-24 | 2024-09-18 | 日本電気株式会社 | 情報処理装置、情報処理方法及びプログラム |
| US20220269784A1 (en) | 2021-02-25 | 2022-08-25 | Quantum Star Technologies Inc. | N-dimensional model techniques and architectures for data protection |
| JP7785744B2 (ja) * | 2021-03-09 | 2025-12-15 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
| US12020461B2 (en) * | 2021-03-10 | 2024-06-25 | Tencent America LLC | Method and apparatus for Haar-based point cloud coding |
| JP2022162485A (ja) * | 2021-04-12 | 2022-10-24 | Kddi株式会社 | 点群復号装置、点群符号化装置、点群処理システム、点群復号方法及びプログラム |
| JP2024516366A (ja) | 2021-04-13 | 2024-04-15 | テレフオンアクチーボラゲット エルエム エリクソン(パブル) | ブロック重要性マッピング |
| JPWO2022260115A1 (es) * | 2021-06-11 | 2022-12-15 | ||
| WO2023276820A1 (ja) * | 2021-07-02 | 2023-01-05 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
| US20250088665A1 (en) * | 2021-07-20 | 2025-03-13 | Lg Electronics Inc. | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
| CN113559497B (zh) * | 2021-09-24 | 2021-12-21 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备以及可读存储介质 |
| US20230294726A1 (en) * | 2022-03-18 | 2023-09-21 | Nvidia Corporation | Sensor data based map creation and localization for autonomous systems and applications |
| EP4250235A1 (en) * | 2022-03-25 | 2023-09-27 | Beijing Xiaomi Mobile Software Co., Ltd. | Encoding/decoding positions of points of a point cloud emcompassed in a cuboid volume |
| CN115278269B (zh) * | 2022-06-20 | 2024-02-23 | 鹏城实验室 | 一种点云属性编码方法、点云属性解码方法及存储介质 |
| CN120584361A (zh) * | 2023-02-01 | 2025-09-02 | Oppo广东移动通信有限公司 | 基于视觉体积视频编码的方法、编码器及解码器 |
| CN119697370B (zh) * | 2024-12-02 | 2025-10-10 | 北京大学深圳研究生院 | 动态点云压缩方法、装置、设备及计算机可读存储介质 |
| US20250225277A1 (en) * | 2025-02-18 | 2025-07-10 | Bubblr Inc. | Sensitive data protection |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6674911B1 (en) * | 1995-09-14 | 2004-01-06 | William A. Pearlman | N-dimensional data compression using set partitioning in hierarchical trees |
| JP4111367B2 (ja) * | 2000-11-28 | 2008-07-02 | Kddi株式会社 | 3次元画像の階層符号化方法および階層伝送復号方法 |
| JP3642412B2 (ja) * | 2000-12-28 | 2005-04-27 | Kddi株式会社 | 3次元画像の3次元ウェーブレット分解方法、階層符号化伝送方法および階層復号方法 |
| JP2006108792A (ja) * | 2004-09-30 | 2006-04-20 | Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan | 画像信号の符号化方法および装置 |
| JP2008078979A (ja) | 2006-09-21 | 2008-04-03 | Victor Co Of Japan Ltd | 動画像階層符号量割当装置、階層符号化装置、階層符号量割当プログラム及び階層符号化プログラム |
| CN1946180B (zh) * | 2006-10-27 | 2010-05-12 | 北京航空航天大学 | 一种基于Octree的三维模型压缩编码方法 |
| EP3675493A1 (en) * | 2010-06-04 | 2020-07-01 | Sony Corporation | Image processing apparatus and method |
| KR102165220B1 (ko) | 2012-06-29 | 2020-10-14 | 벨로스 미디어 인터내셔널 리미티드 | 부호화 장치 및 부호화 방법 |
| WO2014007030A1 (en) * | 2012-07-05 | 2014-01-09 | Sharp Kabushiki Kaisha | Transmitting device, receiving device, communication system and interpolation method |
| WO2014020663A1 (ja) | 2012-07-30 | 2014-02-06 | 三菱電機株式会社 | 地図表示装置 |
| KR101663668B1 (ko) * | 2014-06-27 | 2016-10-07 | 삼성전자주식회사 | 영상 패딩영역의 비디오 복호화 및 부호화 장치 및 방법 |
| KR102545015B1 (ko) * | 2015-12-14 | 2023-06-19 | 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 | 포인트 클라우드 삼차원 데이터 부호화 방법, 포인트 클라우드 삼차원 데이터 복호 방법, 포인트 클라우드 삼차원 데이터 부호화 장치 및 포인트 클라우드 삼차원 데이터 복호 장치 |
| US10223810B2 (en) | 2016-05-28 | 2019-03-05 | Microsoft Technology Licensing, Llc | Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression |
| US11297346B2 (en) * | 2016-05-28 | 2022-04-05 | Microsoft Technology Licensing, Llc | Motion-compensated compression of dynamic voxelized point clouds |
| US10694210B2 (en) * | 2016-05-28 | 2020-06-23 | Microsoft Technology Licensing, Llc | Scalable point cloud compression with transform, and corresponding decompression |
| EP3293702B1 (en) * | 2016-09-13 | 2020-04-29 | Dassault Systèmes | Compressing a signal that represents a physical attribute |
| US9881389B1 (en) * | 2017-02-07 | 2018-01-30 | 8i Limited | Data compression for visual elements |
| JP7234925B2 (ja) | 2017-07-10 | 2023-03-08 | ソニーグループ株式会社 | 情報処理装置および方法 |
| JP2020017927A (ja) | 2018-07-27 | 2020-01-30 | キヤノン株式会社 | 画像処理装置およびその制御方法、画像処理システム |
| WO2020055865A1 (en) * | 2018-09-14 | 2020-03-19 | Futurewei Technologies, Inc. | Improved attribute support in point cloud coding |
| CN112823525B (zh) * | 2018-10-02 | 2024-12-06 | 瑞典爱立信有限公司 | 基于图块组id对图片进行编码和解码 |
| JP7448482B2 (ja) * | 2018-11-16 | 2024-03-12 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
-
2020
- 2020-02-05 WO PCT/JP2020/004360 patent/WO2020162495A1/ja not_active Ceased
- 2020-02-05 KR KR1020217023687A patent/KR102848120B1/ko active Active
- 2020-02-05 CN CN202510594852.6A patent/CN120525973A/zh active Pending
- 2020-02-05 CN CN202080011749.XA patent/CN113366536B/zh active Active
- 2020-02-05 EP EP20752819.1A patent/EP3923242B1/en active Active
- 2020-02-05 MX MX2021008910A patent/MX2021008910A/es unknown
- 2020-02-05 EP EP26171706.0A patent/EP4749576A3/en active Pending
- 2020-02-05 KR KR1020257027002A patent/KR20250126868A/ko active Pending
- 2020-02-05 CA CA3126760A patent/CA3126760A1/en active Pending
- 2020-02-05 JP JP2020571235A patent/JP7512209B2/ja active Active
- 2020-02-05 BR BR112021013402-6A patent/BR112021013402A2/pt unknown
- 2020-02-05 ES ES20752819T patent/ES3074503T3/es active Active
-
2021
- 2021-07-23 MX MX2025005128A patent/MX2025005128A/es unknown
- 2021-07-30 US US17/390,194 patent/US11909992B2/en active Active
-
2024
- 2024-01-11 US US18/410,582 patent/US12464145B2/en active Active
- 2024-06-26 JP JP2024102717A patent/JP7834136B2/ja active Active
-
2025
- 2025-10-08 US US19/353,113 patent/US20260039846A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| KR20250126868A (ko) | 2025-08-25 |
| JP7512209B2 (ja) | 2024-07-08 |
| US20210368186A1 (en) | 2021-11-25 |
| CA3126760A1 (en) | 2020-08-13 |
| KR20210124223A (ko) | 2021-10-14 |
| US20260039846A1 (en) | 2026-02-05 |
| EP4749576A2 (en) | 2026-05-27 |
| EP3923242A4 (en) | 2022-04-06 |
| US20240155142A1 (en) | 2024-05-09 |
| EP3923242B1 (en) | 2026-05-20 |
| KR102848120B1 (ko) | 2025-08-20 |
| JP7834136B2 (ja) | 2026-03-23 |
| JP2024124430A (ja) | 2024-09-12 |
| US12464145B2 (en) | 2025-11-04 |
| EP4749576A3 (en) | 2026-07-22 |
| WO2020162495A1 (ja) | 2020-08-13 |
| CN120525973A (zh) | 2025-08-22 |
| CN113366536B (zh) | 2025-05-27 |
| EP3923242A1 (en) | 2021-12-15 |
| MX2021008910A (es) | 2021-08-24 |
| CN113366536A (zh) | 2021-09-07 |
| JPWO2020162495A1 (ja) | 2021-12-09 |
| MX2025005128A (es) | 2025-06-02 |
| US11909992B2 (en) | 2024-02-20 |
| BR112021013402A2 (pt) | 2021-09-14 |