BR112020019540A2 - Método e aparelho para codificação/decodificação de uma nuvem de pontos representando um objeto 3d - Google Patents
Método e aparelho para codificação/decodificação de uma nuvem de pontos representando um objeto 3d Download PDFInfo
- Publication number
- BR112020019540A2 BR112020019540A2 BR112020019540-5A BR112020019540A BR112020019540A2 BR 112020019540 A2 BR112020019540 A2 BR 112020019540A2 BR 112020019540 A BR112020019540 A BR 112020019540A BR 112020019540 A2 BR112020019540 A2 BR 112020019540A2
- Authority
- BR
- Brazil
- Prior art keywords
- point
- projection line
- points
- point cloud
- depth
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004590 computer program Methods 0.000 claims 1
- 230000006835 compression Effects 0.000 description 25
- 238000007906 compression Methods 0.000 description 25
- 230000000875 corresponding effect Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000004806 packaging method and process Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000012858 packaging process Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012669 compression test Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000007654 immersion Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012876 topography Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/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
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Generation (AREA)
Abstract
o presente método compreende: projetar ortogonalmente pelo menos um ponto de uma nuvem de pontos ao longo de linhas de projeção; e para pelo menos dois pontos de uma mesma linha de projeção, sinalizar, em um fluxo de bits, se uma posição da referida linha de projeção entre um ponto mais próximo e um ponto mais distante da referida linha de projeção está ocupada ou não.
Description
“MÉTODO E APARELHO PARA CODIFICAÇÃO/DECODIFICAÇÃO DE UMA NUVEM DE PONTOS REPRESENTANDO UM OBJETO 3D”
1. Campo da Invenção.
[001] Os presentes princípios estão relacionados, de modo geral, à codifica- ção e decodificação de uma nuvem de pontos representando um objeto 3D. Particu- larmente, mas não exclusivamente, o campo técnico dos presentes princípios está relacionado à codificação/decodificação baseada em projeção de uma nuvem de pontos.
2. Antecedentes da Invenção.
[002] A presente seção visa a introduzir o leitor a vários aspectos da técnica, que podem estar relacionados a vários aspectos dos presentes princípios descritos e/ou reivindicados adiante. Acredita-se que esta discussão seja de grande auxílio para fornecer ao leitor informações de pano de fundo, ajudando-o a compreender melhor os vários aspectos dos presentes princípios. Logo, deve-se compreender que essas declarações devem ser lidas à luz do que foi dito, e não como admissões da técnica anterior.
[003] Uma nuvem de pontos é um conjunto de pontos normalmente destina- do a representar a superfície externa de um objeto 3D, mas também geometrias mais complexas, como cabelos ou pelos, que não podem ser representadas de for- ma eficiente por outros formatos de dados, como malhas. Cada ponto de uma nu- vem de pontos é geralmente definido por uma localização espacial 3D (coordenadas X, Y e Z no espaço 3D), e possivelmente por outros atributos associados, tal como cor, representados no espaço de cores RGB ou YUV, por exemplo, uma transparên- cia, uma refletância, um vetor normal, etc.
[004] Uma nuvem de pontos colorida pode ser um conjunto de pontos de 6 componentes (X, Y, Z, R, G, B) ou, de forma equivalente, (X, Y, Z, Y, U, V), onde (X,Y,Z) define a localização espacial de um ponto em um espaço 3D e (R,G,B) ou
(Y,U,V) define uma cor deste ponto.
[005] No que se segue, o termo “nuvem de pontos” refere-se a qualquer nu- vem de pontos, inclusive uma nuvem de pontos colorida.
[006] As nuvens de pontos coloridas podem ser estáticas ou dinâmicas, de- pendendo de se a nuvem de pontos evolui ou não em relação ao tempo. Deve-se observar que, no caso de uma nuvem de pontos dinâmica, o número de pontos não é necessariamente constante, mas, pelo contrário, geralmente evolui com o tempo.
Uma nuvem de pontos dinâmica é, portanto, uma lista ordenada no tempo de con- juntos e pontos.
[007] Em termos práticos, as nuvens de pontos coloridas podem ser usadas para finalidades diversas, como em prédios/construções históricas em que objetos, como estátuas ou construções, são varridos em 3D a fim de compartilhar a configu- ração espacial do objeto sem transportá-lo ou visitá-lo. Além disso, é uma forma de garantir que será preservada a memória do objeto caso ele seja destruído; por exemplo, um tempo atingido por um terremoto. Tais nuvens de pontos coloridas são geralmente estáticas e imensas.
[008] Outro caso de uso é na topografia e na cartografia, nas quais, ao utili- zar representações 3D, os mapas não se limitam ao plano e podem incluir o relevo.
[009] A indústria automotiva e os carros autônomos também são domínios nos quais as nuvens de pontos podem ser utilizadas. Os carros autônomos deverão ser capazes de “sondar” seu ambiente para tomar decisões de direção seguras ba- seado na realidade do seu entorno imediato. Os sensores típicos produzem nuvens de pontos dinâmicas que são usadas pelo mecanismo de decisão. Essas nuvens de pontos não devem ser vistas por um ser humano. Elas são geralmente pequenas, não necessariamente coloridas, e dinâmicas com uma alta frequência de captura.
Elas podem ter outros atributos, como a refletância, que é uma informação valiosa correlacionada ao material da superfície física do objeto detectado e que pode aju-
dar nas decisões.
[010] A Realidade Virtual (VR) e os mundos imersivos recentemente se tor- naram um tema de grande interesse, e muitos preveem que serão o futuro do vídeo plano 2D. A ideia básica é imergir o espectador em um ambiente inteiramente ao seu redor, diferentemente da TV convencional, onde ele só pode olhar para o mundo virtual à sua frente. Existem diversas gradações na imersão, dependendo da liber- dade do espectador no ambiente. As nuvens de pontos coloridas são um bom can- didato a formato de distribuição de mundos em VR. Elas podem ser estáticas ou di- nâmicas, e geralmente são de tamanho médio, digamos de não mais do que alguns milhões de pontos de uma vez.
[011] A compressão de nuvem de pontos somente terá êxito no armazena- mento / transmissão de objetos 3D para mundos imersivo se o tamanho do fluxo de bits for baixo o suficiente para viabilizar um armazenamento / transmissão prática para o usuário final.
[012] Também é essencial poder distribuir nuvens de pontos dinâmicas ao usuário final com um consumo de largura de banda razoável, mantendo ainda uma qualidade de experiência aceitável (ou preferencialmente muito boa). De maneira similar à compressão de vídeo, considera-se que o bom uso da correlação temporal seja o elemento crucial que resultará na compressão eficiente das nuvens de pontos dinâmicas.
[013] Abordagens bem conhecidas projetam uma nuvem de pontos colorida representando a geometria e as cores de um objeto 3D sobre as faces de um cubo englobando o objeto 3D para obter vídeos contendo textura representando a infor- mação de cor da nuvem de pontos e informação de profundidade representando a informação de geometria da nuvem de pontos, e codificam a textura e os vídeos em profundidade usando um codificador legado, tal como 3D-HEVC (uma extensão do HEVC, cuja especificação pode ser encontrada no site da ITU, recomendação T,
série H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I anexo I).
[014] A realização da compressão está próxima da compressão de vídeo pa- ra cada ponto projetado, mas alguns conteúdos podem ser mais complexos devido às oclusões, redundância e estabilidade temporal quando se consideram as nuvens de pontos dinâmicas. Consequentemente, a compressão de nuvem de pontos é mais exigente do que a compressão de vídeo em termos de taxas de bits.
[015] Com respeito às oclusões, é praticamente impossível obter a geometria completa de uma topologia complexa sem usar muitas projeções. Portanto, os re- cursos necessários (capacidade computacional, memória de armazenamento) para codificar/decodificar todas essas projeções geralmente são muito altos.
[016] Um codec de nuvem de pontos usando um esquema de projeção de textura e profundidade foi proposto recentemente durante o 120o encontro MPEG.
Este esquema é descrito no documento ISO/IEC JTC1/SC29 WG11 Doc. N17248, Macau, CN, outubro de 2017, no qual o esquema proposto é chamado de “Point cloud compression Test Model Category 2 version 0.0 (TMC2v0)”.
[017] Este codec potencializa os codecs de vídeo existentes para comprimir a informação de geometria e textura de uma nuvem de pontos dinâmica, essencial- mente por meio da conversão dos dados da nuvem de pontos dinâmica em um con- junto de sequências de vídeo diferentes.
[018] Mais especificamente, duas sequências de vídeo, uma para capturar a informação de geometria dos dados da nuvem de pontos e outra para capturar a in- formação de textura, ou seja, as cores dos pontos, são geradas e comprimidas usando codecs de vídeo existentes, por exemplo, usando o codificador do perfil Principal do HEVC.
[019] Metadados adicionais que são necessários para interpretar as duas sequências de vídeo, ou seja, um mapa de ocupação e informação auxiliar de ca- mada/bloco auxiliar, também são gerados e comprimidos separadamente. Os fluxos de bits de vídeo gerados e os metadados são então multiplexados juntos de modo a gerar o fluxo de bits da nuvem de pontos final. Os metadados são adicionalmente codificados por um codec de entropia, tal como um codec aritmético.
[020] A estrutura de um codificador 2 ilustrativo deste codec de nuvem de pontos é representada na Figura 1.
[021] O codificador 2 compreende 3 blocos principais: um bloco de compres- são de geometria 4, um bloco de compressão de metadados 6 e um bloco de com- pressão de textura 8.
[022] O bloco de compressão de geometria 4 compreende um bloco de cria- ção de camada de profundidade 10 que decompõe a nuvem de pontos de entrada em camadas de profundidade.
[023] O processo de criação de camada de profundidade 10 visa a decompor a nuvem de pontos em um número mínimo de camadas de profundidade com limites suaves, ao mesmo tempo minimizando o erro de reconstrução. Uma camada de pro- fundidade representa uma parte de uma nuvem de pontos por um grupo de pixels que estão associados a valores de profundidade.
[024] Como um exemplo, a seguinte abordagem, detalhada na Figura 2, é implementada.
[025] Primeiro, a normal em cada ponto é estimada em 102 conforme des- crito em Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, Werner Stuetzle, “Surface reconstruction from unorganized points”. ACM SIGGRAPH 1992 Proceedings, 71-78.
[026] Um agrupamento inicial da nuvem de pontos é então obtido em 104 associando cada ponto a um dos seguintes seis planos orientados, definidos por su- as normais: - (1.0, 0.0, 0.0), - (0.0, 1.0, 0.0),
- (0.0, 0.0, 1.0), - (-1.0, 0.0, 0.0), - (0.0, -1.0, 0.0), e - (0.0, 0.0, -1.0).
[027] Mais precisamente, cada ponto está associado ao plano que possui a normal mais próxima (isto é, maximiza o produto escalar da normal no ponto e da normal no plano).
[028] De acordo com uma modalidade, os seis planos orientados descritos acima são indexados da seguinte forma: - (1.0, 0.0, 0.0) é indexado pelo índice de agrupamento 0; - (0.0, 1.0, 0.0) é indexado pelo índice de agrupamento 1; - (0.0, 0.0, 1.0) é indexado pelo índice de agrupamento 2; - (-1.0, 0.0, 0.0) é indexado pelo índice de agrupamento 0; - (0.0, -1.0, 0.0) é indexado pelo índice de agrupamento 1; - (0.0, 0.0, -1.0) é indexado pelo índice de agrupamento 2.
[029] Cada ponto é então associado ao índice do agrupamento correspon- dente.
[030] O agrupamento inicial é então refinado por meio da atualização iterati- va do índice de agrupamento associado a cada ponto baseado em sua normal e os índices de agrupamento de seus vizinhos mais próximos. De acordo com uma mo- dalidade, para um ponto considerado, se todos os seus pontos vizinhos, por exem- plo, todos os pontos para os quais a distância para o ponto atual no espaço 3D é menor do que 2, são atribuídos a um agrupamento, indicado como AgrupamentoA, e o ponto considerado é atribuído a outro agrupamento, o índice de agrupamento do ponto considerado é atualizado para AgrupamentoA.
[031] Em seguida, as camadas de profundidade são extraídas em 106 por meio da aplicação de um procedimento de extração de componente conectado, ou seja, extraindo-se pontos vizinhos com o mesmo índice de agrupamento para formar um componente conectado. De acordo com uma modalidade, um componente co- nectado é construído agrupando-se todos os pontos que satisfazem às seguintes duas condições ao mesmo tempo:
[032] Todos os pontos possuem o mesmo índice de agrupamento.
[033] Para cada ponto no componente conectado relacionado, existe pelo menos um ponto no mesmo componente conectado cuja distância para o ponto atual é menor do que um limiar predefinido, por exemplo, igual a 1.
[034] Cada componente conectado é associado a um plano de projeção de acordo com seu índice de agrupamento, isto é, o índice de agrupamento dos pontos pertencendo a ele. Uma modalidade é como se segue.
- Plano YOZ para um componente conectado com índice de agrupamento 0; - Plano XOZ para um componente conectado com índice de agrupamento 1; - Plano XOY para um componente conectado com índice de agrupamento 2.
[035] De modo a lidar melhor com o caso de múltiplos pontos ao longo da mesma linha de projeção, onde uma linha de projeção compreende os pontos com duas coordenadas iguais dentre três coordenadas (X, Y, Z). Por exemplo, uma linha de projeção poderia consistir de todos os pontos com as mesmas coordenadas (X, Y), duas camadas de profundidade são geradas para cada componente conectado, registrando os valores de profundidades D0 e D1, correspondendo aos valores de profundidade mínimo e máximo do pixel correspondente e satisfazendo D1- D0<=SurfaceThickness, onde SurfaceThickness é a espessura máxima da superfí- cie, por exemplo, igual a 4.
[036] Mais precisamente, seja {H(u,v)} o conjunto de pontos do componente conectado atual que é projetado para o mesmo pixel (u,v). A primeira camada de profundidade, também chamada de camada próxima, armazena a profundidade do ponto em {H(u,v)} com a menor profundidade D0. A segunda camada de profundida-
de, chamada de camada distante, captura o ponto em {H(u,v)} com a maior profun- didade dentro do intervalo [D0, D0+SurfaceThickness].
[037] O bloco de criação de camada de profundidade 10 é seguido por um bloco de empacotamento 12, que mapeia todos os componentes conectados proje- tados sobre uma grade 2D enquanto tenta minimizar o espaço não-utilizado, e ga- rantindo que cada bloco TxT (por exemplo, 16x16) da grade seja associado a um componente conectado único projetado, onde T é um parâmetro definido pelo usuá- rio que é codificado no fluxo de bits e enviado ao decodificador. Cada ponto na gra- de 2D corresponde a um pixel em uma imagem.
[038] O empacotamento usa uma estratégia de empacotamento simples que tenta iterativamente inserir camadas em uma grade de WxH, onde W e H são parâ- metros definidos pelo usuário, por exemplo, 1028x1028, que corresponde à resolu- ção das imagens de geometria/textura que serão codificadas. A localização da ca- mada e determinada através de uma busca exaustiva que é realizada na ordem de varredura por rastreio. A primeira localização que pode assegurar uma inserção livre de sobreposição da camada e selecionada e as células da grade cobertas pela ca- mada são marcadas como usadas. Se nenhum espaço vazio na resolução de ima- gem atual puder comportar uma camada, então a altura H da grade é temporaria- mente duplicada e a busca é aplicada novamente. Ao término do processo, H é cor- tado de modo a se ajustar às células da grade usadas. A posição de empacotamen- to, que é a posição do canto superior-esquerdo da caixa delimitadora da área proje- tada de cada camada, na grade 2D e o tamanho da área projetada de cada camada são sinalizados no fluxo de bits comprimido.
[039] Um mapa de ocupação é emitido a partir do bloco de empacotamento 12 para o bloco de compressão de metadados 6. O mapa de ocupação consiste de um mapa binário que indica, para cada célula da grade, se ela pertence ao espaço vazio ou à nuvem de pontos, em que uma célula da grade 2D produziria um pixel transportando informação de profundidade ou cor durante o processo de geração de imagem.
[040] O bloco de compressão de geometria 4 também compreende um bloco de geração de imagem 14 que explora o mapeamento 3D para 2D calculado durante o processo de empacotamento 12, mais especificamente, a posição de empacota- mento e o tamanho da área projetada de cada componente conectado, para arma- zenar a geometria da nuvem de pontos como imagens.
[041] Correspondendo ao fato de que duas camadas de profundidade são geradas para cada componente conectado, duas imagens são geradas para arma- zenar a geometria da nuvem de pontos, chamadas de DepthImg0 e DepthImg1.
[042] O bloco de geração de imagem 14 do codificador 2 é adicionalmente detalhado com referência à Figura 3.
[043] A geração de imagem compreende um processo de empacotamento (empacotamento de Profundidade D0) em que, de acordo com a posição de empa- cotamento da área projetada de cada camada, os valores D0 de cada camada são copiados para a parte correspondente da segunda grade.
[044] A geração de imagem também compreende uma determinação de pro- fundidade delta na qual, para cada pixel ocupado de depthImage0, delta_depth = D1 – D0 (D1 e D0 estando na mesma linha de projeção), e delta_depth é armazenado na mesma posição onde o valor de D0 correspondente é armazenado.
[045] A geração de imagem também inclui um entrelaçamento temporal co- mo se segue: (depthImage0_0, depthImage1_0, … depthImage0_i, depthImage1_i, …, depthImage0_n, depthImage1_n), onde depthImage0_i e depthImage1_i são ge- radas a partir do quadro de nuvem de pontos i.
[046] A geração de imagem também compreende um processo de enchimen- to 20 que visa a preencher o espaço vazio entre as camadas de modo a gerar uma imagem suave por partes adequada para compressão de vídeo. Ela usa uma estra-
tégia de enchimento simples, que procede da seguinte forma:
[047] Cada bloco de TxT (por exemplo, 16x16) pixels é processado de ma- neira independente.
[048] Se o bloco estiver vazio (ou seja, todos os seus pixels pertencem a um espaço vazio), então os pixels do bloco são preenchidos copiando ou a última fileira ou coluna do bloco TxT anterior na ordem de rastreio.
[049] Se o bloco estiver cheio (isto é, sem pixels vazios), nada é feito.
[050] Se o bloco tiver tanto pixels vazios quanto preenchidos, então os pixels vazios são preenchidos iterativamente com o valor médio de seus vizinhos não-vazios.
[051] O bloco de geração de imagem 14 é seguido por um bloco de codifica- ção de vídeo em profundidade 22, em que as imagens de profundidade geradas são armazenadas como quadros de vídeo e comprimidas usando qualquer codec de ví- deo legado, tal como o codec de vídeo HM16.16, de acordo com as configurações do HM fornecidas como parâmetros.
[052] No bloco de compressão de metadados 6 do codificador 2, os seguin- tes metadados, chamados por camada/metadados de componente conectado, são reunidos e então codificados para cada componente conectado como se segue: Índice do plano de projeção ○ Índice 0 para os planos (1.0, 0.0, 0.0) e (-1.0, 0.0, 0.0); ○ Índice 1 para os planos (0.0, 1.0, 0.0) e (0.0, -1.0, 0.0); ○ Índice 2 para os planos (0.0, 0.0, 1.0) e (0.0, 0.0, -1.0). Caixa delimitadora 2D (u0, v0, u1, v1) nas imagens de geometria / textura empacotadas; Localização 3D (x0, y0, z0) do componente conectado representado em termos de desvio de profundidade 0, desvio tangencial s0 e desvio bi-tangencial r0.
De acordo com os planos de projeção escolhidos, (0, s0, r0) são calculados como se segue: ○ Índice 0, 0= x0, s0=z0 e r0 = y0; ○ Índice 1, 0= y0, s0=z0 e r0 = x0; ○ Índice 2, 0= z0, s0=x0 e r0 = y0.
[053] Além disso, informações de mapeamento fornecendo, para cada bloco TxT, seu índice de camada/componente conectado associado, chamado de mapa de bloco-para-camada, são geradas e codificadas como se segue:
[054] Para cada bloco TxT, seja L a lista ordenada dos índices das cama- das de modo que sua caixa delimitadora 2D contenha esse bloco. A ordem na lista é a mesma que a ordem usada para codificar as caixas delimitadoras 2D. L é chama- do de lista de camadas candidatas.
[055] O espaço vazio entre as camadas nas imagens de geometria / textura é considerado como uma camada e é atribuído ao índice especial 0, que é adiciona- do à lista de camadas candidatas de todos os blocos.
[056] Seja I o índice da camada que ocupa o bloco TxT atual e seja J a po- sição de I em L. Em vez de codificar explicitamente o índice I, sua posição J é codifi- cada aritmeticamente em vez disso, o que leva a uma melhor eficiência de compres- são.
[057] Além disso, o bloco de compressão de metadados 6 implementa uma codificação do mapa de ocupação.
[058] A compressão do mapa de ocupação aproveita a informação de mape- amento de bloco-para-camada descrita acima, de modo a detectar os blocos TxT vazios (ou seja, blocos com índice de camada 0). Os blocos restantes são codifica- dos como se segue.
[059] O mapa de ocupação poderia ser codificado com uma precisão de B0xB0 blocos, onde B0 é um parâmetro definido pelo usuário. De modo a alcançar a codificação sem perdas, B0 deve ser definido como 1. Na prática, B0=2 ou B0=4 resultam em resultados visualmente aceitáveis, ao mesmo tempo em que reduzem significativamente o número de bits necessário para codificar o mapa de ocupação.
[060] O processo de compressão do mapa de ocupação procede como se segue:
[061] Os valores binários são associados a sub-blocos B0xB0 pertencendo ao mesmo bloco TxT. Um valor de 1 é associado a um sub-bloco, se ele contiver pelo menos um pixel não-preenchido, e 0 em outros casos. Se um sub-bloco tiver um valor de 1, diz-se que ele está cheio, senão, ele é um sub-bloco vazio.
[062] Se todos os sub-blocos de um bloco TxT estiverem cheios (isto é, ti- verem o valor de 1), diz-se que o bloco está cheio. Senão, diz-se que o bloco não está cheio.
[063] Uma informação binária e codificada para cada bloco TxT para indi- car se ele está cheio ou não.
[064] Se o bloco não estiver cheio, uma informação extra indicando a loca- lização dos sub-blocos cheios/vazios e codificada como se segue:
[065] ○ Diferentes ordens de travessia são definidas para os sub- blocos. A Figura 4 mostra as quatro ordens de travessia consideradas.
[066] ○ O codificador escolhe uma das ordens de travessia e sinaliza explicitamente seu índice no fluxo de bits.
[067] ○ Os valores binários associados aos sub-blocos são codificados usando uma estratégia de codificação de comprimento de sequência.
[068] ▪ O valor binário do sub-bloco inicial é codificado.
[069] ▪ Sequências contínuas de 0s e 1s são detectadas, en- quanto se segue a ordem de travessia selecionada pelo codificador.
[070] ▪ O número de sequências detectadas é codificado.
[071] ▪ O comprimento de cada sequência, exceto da última, também é codificado.
[072] Os índices de bloco-para-camada e o mapa de ocupação são chama- dos de metadados por bloco.
[073] O bloco de compressão de textura 8 compreende uma decodificação de vídeo em profundidade por um decodificador legado, tal como 3D-HEVC (uma extensão do HEVC cuja especificação pode ser encontrada no site da ITU, reco- mendação T, série H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I anexo I), seguido por um processo de reconstrução de geometria 24 que explora a informação de mapa de ocupação de modo a detectar os pixels ocupados nas imagens de geo- metria reconstruídas. As posições 3D dos pontos associados a esses pixels ocupa- dos são calculadas utilizando-se dos metadados e das imagens de geometria. Mais precisamente, seja P o ponto reconstruído a partir de um pixel ocupado (u, v) e seja (0, s0, r0) a localização 3D do componente conectado ao qual ele pertence e (u0, v0, u1, v1) a caixa delimitadora 2D da camada de profundidade correspondente. P poderia ser expresso em termos de profundidade (u, v), desvio tangencial s(u, v) e desvio bi-tangencial r(u, v) como se segue: (u, v) = 0 + g(u, v) s(u, v) = s0 – u0 + u r(u, v) = r0 – v0 + v,
[074] onde g(u, v) é o componente de luminância da imagem de geometria reconstruída.
[075] O processo de reconstrução de geometria de nuvem de pontos 24 também gera, para cada ponto reconstruído, a posição do pixel que armazena o va- lor de profundidade reconstruindo o ponto atual, isto é, (i, u, v), onde i indica a ima- gem de profundidade, ou seja, DepthImg0 ou DepthImg1, e (u, v) são as coordena- das do pixel na i-nésima imagem de profundidade.
[076] O bloco de compressão de textura 8 também inclui um bloco de trans- ferência de cor 3D 26 no qual a cor e/ou outro valor de atributo, a ser codificado para cada ponto reconstruído, é determinado em uma forma de minimizar o erro de codi- ficação de informação de cor. De acordo com uma modalidade, para cada ponto re- construído, a cor de seu ponto mais próximo na nuvem de pontos de entrada/original e atribuída como sua cor a ser codificada.
[077] O bloco de transferência de cor 3D 26 é seguido por um bloco de gera- ção de imagem(ns) de textura 28 gerando imagens de textura a serem codificadas armazenando a informação de cor a ser codificada de cada ponto reconstruído na mesma posição como nas imagens de geometria, isto é, (i,u,v).
[078] O bloco de geração de imagem(ns) de textura 28 é seguido por uma codificação de vídeo usando um codificador legado, tal como 3D-HEVC (uma exten- são do HEVC cuja especificação pode ser encontrada no site da ITU, recomendação T, série H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I anexo I).
[079] O fluxo de vídeo de profundidade gerado a partir do bloco de compres- são de geometria 4, os fluxos de metadados por bloco e por camada gerados a partir do fluxo de compressão de metadados 6 e do fluxo de vídeo a cores gerado a partir do bloco de compressão de textura 8 são multiplexados em um fluxo comprimido emitido a partir do codificador 2.
[080] A Figura 5 representa um decodificador 30 correspondendo ao codifi- cador 2 para a reconstrução da nuvem de pontos.
[081] No decodificador 30, o fluxo comprimido emitido a partir do codificador 2 é demultiplexado em um fluxo de vídeo de profundidade, em um fluxo de metada- dos por bloco, em um fluxo de metadados por camada e em um fluxo de vídeo a co- res.
[082] O decodificador 30 compreende um bloco de reconstrução de geome- tria 31 que inclui uma decodificação de vídeo de profundidade por um decodificador legado, tal como o 3D-HEVC (uma extensão do HEVC cuja especificação pode ser encontrada no site da ITU, recomendação T, série H, h265, https://www.itu.int/rec/T-
REC-H.265-201802-I anexo I).
[083] O bloco de reconstrução de imagem 31 também inclui um bloco de re- construção de imagem 32 que é detalhado na Figura 6. Este bloco compreende: - desentrelaçar temporalmente a depthImage0 reconstruída e a depthImage1 reconstruída a partir do fluxo de vídeo de profundidade reconstruído; - recuperar valores de D0 reconstruídos armazenados na depthImage0 re- construída; e
[084] - reconstruir valores D1 usando reconstructed_D0 + reconstruc- ted_Delta_Depth, onde os valores de reconstructed_Delta_Depth estão armazena- dos em depthImage1.
[085] O bloco de reconstrução de imagem 31 também inclui um bloco de re- construção de geometria de nuvem de pontos 33 operando da mesma maneira que o bloco de reconstrução de geometria de nuvem de pontos 24 do codificador.
[086] O decodificador 30 também inclui um bloco de reconstrução de meta- dados no qual metadados por camada e por bloco são decodificados.
[087] O decodificador 30 adicionalmente inclui um processo de reconstrução de geometria incluindo um estágio de decodificação de vídeo de textura por um de- codificador legado, tal como o 3D-HEVC (uma extensão do HEVC cuja especificação pode ser encontrada no site da ITU, recomendação T, série H, h265, https://www.itu.int/rec/T-REC-H.265-201802-I anexo I).
[088] O processo de reconstrução de textura também inclui um estágio de reconstrução de camada de textura no qual as camadas de textura são reconstruí- das usando os metadados por camada e por bloco reconstruídos.
[089] Adicionalmente, o processo de reconstrução de textura inclui um está- gio de reconstrução de textura de nuvem de pontos 35 no qual a cor de cada ponto reconstruído é extraída a partir das imagens de textura reconstruídas usando a posi- ção do pixel reconstruindo cada ponto.
[090] Como mostra a Figura 7, geralmente há mais de um ponto ao longo da mesma linha de projeção. As razões por trás disso compreendem: - A representação da superfície 3D contínua por pontos com coordenadas por inteiros, e/ou - Detalhes da superfície local, e/ou - Auto-oclusão.
[091] De modo a minimizar o erro de reconstrução, o codec descrito acima mantém dois valores de profundidade para cada pixel de uma imagem de projeção.
Os dois valores de profundidades referidos são chamados de profundidade D0 e profundidade D1, correspondendo aos valores de profundidade mínimo e máximo ao longo da linha de projeção correspondente e satisfazendo D1- D0<=SurfaceThickness, onde SurfaceThickness é a espessura máxima de superfí- cie.
[092] Consequentemente, o codificador 2 gera duas imagens de profundida- de para cada quadro da nuvem de pontos (isto é, no caso de uma nuvem de pontos dinâmica, uma nuvem de pontos em uma sequência de nuvens de pontos), onde uma primeira imagem de profundidade DepthImg0 armazena os valores de profundi- dade D0 e uma segunda imagem de profundidade DepthImg1 armazena os valores de delta_depth=profundidade D1-profundidade D0. Deve-se observar que a profun- didade D1 é definida como sendo igual à profundidade D0 quando houver apenas um ponto ao longo da linha de projeção.
[093] Entretanto, usando o codificador da Figura 1, os pontos da nuvem de pontos, chamados de pontos não projetados na Figura 7, que estão entre os dois registrados, não são codificados, o que resulta em perda de qualidade objetiva e subjetiva considerável.
4. Sumário.
[094] Os seguintes aspectos apresentam um sumário simplificado da inven-
ção para propiciar um entendimento básico de alguns aspectos dos presentes prin- cípios. Este sumário não é uma visão geral abrangente dos presentes princípios. Ele não tem a intenção de identificar elementos-chave ou essenciais dos presentes prin- cípios. O sumário a seguir meramente apresenta alguns aspectos dos presentes princípios de uma forma simplificada como uma introdução à descrição mais deta- lhada apresentada a seguir.
[095] Em termos gerais, a presente revelação propõe uma solução para me- lhorar a situação.
[096] Consequentemente, a presente revelação propõe um método compre- endendo projetar ortogonalmente pelo menos um ponto de uma nuvem de pontos ao longo de linhas de projeção; e para pelo menos dois pontos de uma mesma linha de projeção, sinalizar, em um fluxo de bits, se uma posição da referida linha de proje- ção um ponto mais próximo e um ponto mais distante da referida linha de projeção está ocupada ou não.
[097] Vantajosamente, a presente revelação aprimora o desempenho de compressão de uma projeção de um codec de nuvem de pontos baseado em proje- ção de profundidade e textura por meio da sinalização, em um fluxo de bits, quanto a se uma posição de uma linha de projeção entre um ponto mais próximo e um ponto mais distante da referida linha de projeção está ou não ocupada.
[098] A presente revelação também propõe um método compreendendo re- construir dois pontos de uma nuvem de pontos pela desprojeção ortogonal de um ponto mais próximo e um ponto mais distante de uma mesma linha de projeção; e reconstruir um ponto da nuvem de pontos pela desprojeção ortogonal de um ponto da referida linha de projeção quando uma informação indica que a posição do referi- do ponto está ocupada.
[099] O codificador/decodificador é vantajosamente implementado por um ou mais processadores.
[0100] Os métodos de acordo com a revelação podem ser implementados em software ou em um aparelho programável. Eles podem ser implementados so- mente em hardware ou em software, ou em uma combinação dos mesmos.
[0101] Uma vez que a presente invenção pode ser implementada em softwa- re, a presente invenção pode ser incorporada como código legível por computador para provisão a um aparelho programável em qualquer meio portador adequado. Um meio portador pode compreender um meio de armazenamento, tal como um disco flexível, um CD-ROM, uma unidade de disco rígido, um dispositivo de fita magnética ou um dispositivo de memória de estado sólido, entre outros.
[0102] A revelação, dessa forma, proporciona um programa legível por com- putador compreendendo instruções executáveis por computador para permitir que um computador execute o método de codificação/decodificação da invenção.
5. Breve Descrição dos Desenhos.
[0103] Nos desenhos, são ilustrados exemplos dos presentes princípios. Eles ilustram: - A Fig. 1, já descrita, mostra um codificador no qual os presentes princípios podem ser vantajosamente implementados; - A Fig. 2, já descrita, ilustra o processo de criação de camada de profundi- dade da técnica anterior; - A Fig. 3, já descrita, ilustra o processo de geração de imagem da técnica anterior; - A Fig. 4, já descrita, mostra exemplos de travessias de sub-blocos usadas no codificador da Fig. 1; - A Fig. 5, já descrita, mostra um decodificador no qual os presentes princí- pios podem ser vantajosamente implementados; - A Fig. 6, já descrita, ilustra o processo de reconstrução de imagem da téc- nica anterior;
- A Fig. 7, já descrita, é uma ilustração 2D da nuvem de pontos 3D mostran- do os valores de profundidade D0 e profundidade D1 dos pixels da imagem projeta- da de acordo com a técnica anterior; - A Fig. 8 ilustra códigos de profundidade delta aperfeiçoada (EDD) de acor- do com uma modalidade da presente revelação; - A Fig. 9 mostra exemplos de formação de um código de profundidade delta aperfeiçoada (EDD) de acordo com uma modalidade da presente revelação; - A Fig. 10 mostra um codificador de acordo com uma modalidade da pre- sente revelação; - A Fig. 11 mostra o bloco de reconstrução das imagens de profundidade de acordo com uma primeira modalidade da presente revelação; - A Fig. 12 mostra o bloco de reconstrução das imagens de profundidade de acordo com uma segunda modalidade da presente revelação; - A Fig. 13 mostra modificações do decodificador da Figura 5 de acordo com uma modalidade da presente revelação; - A Fig. 14 mostra um codificador sem perdas no qual os presentes princí- pios podem ser vantajosamente implementados; - A Fig. 15 mostra um exemplo de uma arquitetura de um dispositivo de acordo com um exemplo dos presentes princípios; - A Fig. 16 mostra dois dispositivos remotos comunicando-se através de uma rede de comunicação de acordo com um exemplo dos presentes princípios; e - A Fig. 17 mostra a sintaxe de um sinal de acordo com um exemplo dos presentes princípios.
[0104] Elementos similares ou iguais são referenciados com os mesmos nú- meros de referência.
6. Descrição de exemplos dos presentes princípios.
[0105] A partir de agora, descreveremos os presentes princípios mais deta-
lhadamente aqui com referência aos desenhos acompanhantes, nos quais são ilus- trado exemplos dos presentes princípios. Os presentes princípios, entretanto, podem ser incorporados de diversas formas alternativas, não devendo ser interpretados como limitados aos exemplos aqui apresentados. Por conseguinte, muito embora os presentes princípios sejam suscetíveis a várias modificações e formas alternativas, exemplos específicos dos mesmos são ilustrados por meio de exemplos nos dese- nhos e serão descritos aqui em detalhes. Deve-se entender, entretanto, que não há a intenção de limitar os presentes princípios às formas particulares reveladas, mas justo pelo contrário, a revelação deverá abranger todas as modificações, equivalen- tes e alternativas que se enquadram na essência e no âmbito dos presentes princí- pios, conforme definidos pelas reivindicações.
[0106] A terminologia usada neste documento serve apenas para o intuito de descrever exemplos específicos, não tendo a intenção de limitar os presentes princí- pios. Como utilizado na presente invenção, as formas singulares "um", "uma", "o" e "a" pretendem incluir também as formas plurais, salvo indicação em contrário pelo contexto. Deve-se ainda entender que os termos "compreende" e/ou "compreenden- do", “inclui” e/ou “incluindo”, quando utilizados no presente relatório descritivo, espe- cificam a presença de aspectos, etapas, operações, elementos e/ou componentes mencionados, mas não excluem a presença ou adição de um ou mais aspectos, etapas, operações, elementos, componentes e/ou grupos diferentes dos mesmos.
Ademais, quando se retrata um elemento como sendo “responsivo” ou “conectado” a outro elemento, ele pode ser diretamente responsivo ou conectado ao outro elemen- to, ou elementos intervenientes podem estar presentes. Em contrapartida, quando um elemento é retratado como sendo “diretamente responsivo” ou “diretamente co- nectado” a outro elemento, não há elementos intervenientes presentes. Como usado aqui, o termo "e/ou" inclui toda e qualquer combinação de um ou vários dos itens listados associados e pode ser abreviado como “/”.
[0107] Será compreendido que, embora os termos primeiro, segundo, etc.
possam ser utilizados aqui para descrever vários elementos, esses elementos não deverão ser limitados por esses termos. Esses termos são usados apenas para dis- tinguir um elemento de outro. Por exemplo, um primeiro elemento poderia ser cha- mado de segundo elemento, e, de forma similar, um segundo elemento poderia ser chamado de primeiro elemento sem se afastar dos ensinamentos dos presentes princípios.
[0108] Embora alguns dos diagramas incluam setas nos caminhos de comu- nicação para ilustrar uma direção primária de comunicação, deve-se compreender que a comunicação pode ocorrer na direção oposta às setas ilustradas.
[0109] Alguns exemplos são descritos com relação a diagramas de bloco e fluxogramas operacionais em que cada bloco representa um elemento de circuito, módulo ou porção de código que compreende uma ou mais instruções executáveis para implementar a(s) função(ões) lógica(s) especificada(s). Deve-se notar ainda que, em outras implementações, a(s) função(ões) observada(s) no bloco pode(m) ocorrer fora da ordem observada. Por exemplo, dois blocos apresentados em suces- são podem, de fato, ser executados de forma substancialmente simultânea, ou, al- gumas vezes, os blocos podem ser executados na ordem inversa, dependendo da funcionalidade / dos atos envolvidos.
[0110] Qualquer referência aqui a "de acordo com um exemplo” ou “em um exemplo” significa que um aspecto, estrutura ou característica específica descrita em conexão com o exemplo pode ser incluído em pelo menos uma implementação dos presentes princípios. As ocorrências da expressão "de acordo com um exemplo" ou “em um exemplo” em diversos trechos no relatório descritivo não se referem neces- sariamente ao mesmo exemplo, tampouco são os exemplos separados ou alternati- vos necessariamente mutuamente exclusivas de outros exemplos.
[0111] Os numerais de referência apresentados nas reivindicações são ape-
nas ilustrativos, não tendo, portanto, efeito limitante sobre o âmbito das reivindica- ções.
[0112] Embora não sejam descritos explicitamente, os presentes exemplos e variantes podem ser empregados em qualquer combinação ou subcombinação.
[0113] Os presentes princípios são descritos para codificação/decodificação de uma nuvem de pontos coloridos, mas se estendem à codificação/decodificação de uma sequência de nuvens de pontos coloridos, uma vez que cada nuvem de pon- tos coloridos da sequência é codificada/decodificada sequencialmente como descrito abaixo.
[0114] De acordo com uma modalidade, o codificador 2 e o decodificador 30 já descritos são usados para a implementação dos presentes princípios.
[0115] Como explicado acima com referência a Figura 7, geralmente há mais de um ponto ao longo da mesma linha de projeção. De modo a minimizar o erro de reconstrução, dois valores de profundidade são armazenados para cada pixel de uma imagem de projeção. Os referidos dois valores de profundidade são chamados de profundidade D0 e profundidade D1, correspondendo aos valores de profundida- de mínimo e máximo.
[0116] Consequentemente, o codificador 2 gera duas imagens de profundi- dade para cada quadro de nuvem de pontos, chamadas de DepthImg0 e DepthImg1.
No codificador 2, os pontos, chamados de pontos não projetados, entre os pontos registrados correspondendo à profundidade D0 e à profundidade D1, não são codifi- cados.
[0117] Vantajosamente, de acordo com os presentes princípios, esses pon- tos não-projetados são codificados, conforme aparece na Figura 8, da seguinte for- ma:
[0118] - ao longo de todas as linhas de projeção com pelo menos um ponto, para cada posição entre a profundidade D0 e a profundidade D1, utiliza-se um bit para indicar se esta posição está ou não ocupada,
[0119] - concatenam-se todos os referidos bits ao longo de uma linha de pro- jeção para formar uma palavra-código, doravante denominada código de Profundi- dade Delta Aperfeiçoada (EDD),
[0120] - empacotam-se códigos de EDD de um quadro de nuvem de pontos em uma ou mais imagens que serão adicionalmente codificadas por codecs de vídeo maduros, como o HEVC.
[0121] Para integrar os códigos de EDD no codificador 2, em vez de codificar DeltaD=(D1-D0) em DepthImg1, os códigos de EDD de todas as linhas de projeção com pelo menos um ponto são registrados e codificados em DepthImg1.
[0122] Como representado na Figura 9, a presente revelação propõe duas modalidades para concatenar todos os bits representando todas as posições entre a profundidade D0 e a profundidade D1 ao longo de uma linha de projeção para for- mar um código de EDD.
[0123] Uma modalidade toma os bits representando a posição próxima à pro- fundidade D0 como os bits superiores da palavra-código resultante, e os bits repre- sentando a posição próxima à profundidade D1 como os bits inferiores da palavra- código resultante, como ilustrado na parte direita da Figura 9.
[0124] Outra modalidade toma os bits representando a posição próxima à profundidade D1 como os bits superiores da palavra-código resultante, e os bits re- presentando a posição próxima à profundidade D0 como os bits inferiores da pala- vra-código resultante, como ilustrado na parte esquerda da Figura 9. Os exemplos no topo da Figura 8 são construídos usando esta modalidade ilustrada na parte es- querda da Figura 9.
[0125] A Figura 10 mostra o codificador 2 modificado de acordo com os ensi- namentos da presente revelação. Mais particularmente, os blocos da criação de ca- minho de profundidade 10, da geração da(s) imagem(ns) de profundidade 14, da reconstrução de geometria de nuvem de pontos 24 e da transferência de cores 3D 26 do codificador 2 são modificados de acordo com as modalidades da presente re- velação.
[0126] No bloco de criação de camada de profundidade 10, representado na Figura 2, o bloco de geração de camada de profundidade 106 é modificado. Em vez de simplesmente registrar D0 e D1 ao longo de cada linha de projeção, os pontos entre D0 e (D0 + surfaceThickness) são registrados por um código de EDD. As duas camadas de profundidade de cada componente conectado registram D0 e os códi- gos de EDD.
[0127] O bloco de geração de imagem(ns) de profundidade 14, representado na Figura 3, também e modificado registrando-se códigos de EDD em DepthImg1 em vez de D1. Duas modalidades para registrar os códigos de EDD em DepthImg1 são apresentadas nas Figuras 11 e 12.
[0128] De acordo com a primeira modalidade, representada na Figura 11, to- dos os códigos de EDD são empacotados em 142, usando os metadados por bloco, em DepthImg1.
[0129] De acordo com a segunda modalidade, representada na Figura 12, (D0+EDD_code) é empacotado em 144, usando os metadados por bloco, em Dep- thImg1. DepthImg1 é então preenchido para melhorar seu desempenho de com- pressão.
[0130] Vantajosamente, o bloco de reconstrução de geometria de nuvem de pontos 24 também é modificado.
[0131] Os pontos reconstruídos a partir dos valores de D0 decodificados e dos códigos de EDD decodificados constituem a nuvem de pontos reconstruída (so- mente geometria). Se houver mais de dois pontos reconstruídos ao longo de uma linha de projeção, os pontos reconstruídos entre os dois pontos com valores de pro- fundidade reconstruídos mínimo e máximo são chamados de pontos reconstruídos intermediários.
[0132] Uma vez que o bloco de reconstrução de geometria de nuvem de pon- tos 24 determina como empacotar os valores de cor dos pontos reconstruídos, a modificação deste bloco 24 também permite lidar com a cor dos pontos intermediá- rios reconstruídos.
[0133] Além da geometria da nuvem de pontos reconstruída, a saída deste bloco 24 também inclui coordenadas de imagem empacotada por ponto, as quais, para cada ponto, indicam a posição nas duas imagens de textura para armazenar o valor de cor do ponto atual a ser codificado. Com exceção dos pontos reconstruídos intermediários, as coordenadas de imagem empacotada por ponto dos outros re- construídos, ou seja, os pontos correspondendo a D0 e D1, são determinadas da mesma maneira que descrito para o codificador 2.
[0134] Propõem-se duas modalidades para lidar com a cor dos referidos pon- tos reconstruídos intermediários.
[0135] De acordo com uma primeira modalidade, a cor dos referidos pontos reconstruídos intermediários não é sinalizada no fluxo de bits comprimido. O decodi- ficador irá determinar a cor reconstruída dos referidos pontos reconstruídos interme- diários com base em seus pontos adjacentes com a cor reconstruída a partir do fluxo de bits, por exemplo, através de interpolação. Usando esta modalidade, as coorde- nadas de imagem empacotada por ponto desses pontos reconstruídos são definidas como (NULO, NULO, NULO). NULO representa algum valor de posição de imagem inválido, tal como -1.
[0136] De acordo com uma segunda modalidade, a cor dos referidos pontos reconstruídos intermediários é sinalizada no fluxo de bits comprimido. A cor dos refe- ridos pontos reconstruídos intermediários a ser sinalizada é determinada no bloco de transferência de cor 3D 26 da mesma forma que os outros pontos reconstruídos. A cor dos pontos reconstruídos intermediários é armazenada nos blocos de imagem de textura não ocupados por quaisquer camadas, que podem ser interpretados a partir dos metadados por bloco, em TexImg0 e/ou TexImg1, que são duas imagens correspondendo a DepthImg0 e DepthImg1 armazenando informação de cor a ser codificada. As posições de imagem empacotada dos pontos reconstruídos interme- diários são determinadas com base em suas posições reconstruídas. Um exemplo é como se segue.
[0137] Em uma primeira etapa, todos os blocos não-ocupados em DepthI- mage0 e DepthImage 1 são classificados em uma lista. Há duas possibilidades, os blocos não-ocupados em DepthImage0 são classificados antes ou após DepthI- mage1 na lista de blocos não ocupados classificada. Os blocos não ocupados na mesma imagem são classificados por seu (uMin, vMin) (no espaço de cores YUV).
[0138] Em uma segunda etapa, sempre que um novo ponto intermediário é reconstruído durante a etapa de reconstrução de geometria, sua posição de imagem empacotada por ponto é o primeiro pixel não ocupado do primeiro bloco não ocupa- do na lista de blocos não ocupados classificada. Um bloco originalmente não ocupa- do é excluído da lista de blocos não ocupados classificada se ele tiver sido totalmen- te ocupado por pontos intermediários.
[0139] Vantajosamente, o bloco de transferência de cores 3D 26 também é modificado. Neste bloco, a determinação de cores dos pontos com posições de ima- gem empacotada (NULO, NULO, NULO) é omitida.
[0140] Comparado com o codificador da técnica anterior da Figura 1, os se- guintes metadados são vantajosamente adicionados à saída de fluxo de bits pelo codificador da Figura 10:
[0141] um bit indicando se o novo esquema de codificação de cores des- crito na presente revelação é ou não utilizado. Por exemplo, 1 significa que ele é usado e 0 significa o contrário.
[0142] Se o primeiro bit for igual a 1, seguem-se os seguintes itens:
Claims (16)
1. Método, CARACTERIZADO por compreender: - reconstruir dois pontos de uma nuvem de pontos por meio da desprojeção ortogonal de um ponto mais próximo e um ponto mais distante de uma mesma linha de projeção; e - reconstruir um ponto da nuvem de pontos por meio da desprojeção ortogonal de um ponto da referida linha de projeção quando uma informação indica que a posição do referido ponto está ocupada.
2. Dispositivo, CARACTERIZADO por compreender pelo menos um processador configurado para: - reconstruir dois pontos de uma nuvem de pontos por meio da desprojeção ortogonal de um ponto mais próximo e um ponto mais distante de uma mesma linha de projeção; e - reconstruir um ponto da nuvem de pontos por meio da desprojeção ortogonal de um ponto da referida linha de projeção quando uma informação indica que a posição do referido ponto está ocupada.
3. Método, de acordo com a reivindicação 1, ou dispositivo de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o método adicionalmente compreende ou o pelo menos um processador é adicionalmente configurado para: - receber, a partir de um fluxo de bits, a referida informação indicando se uma posição de uma linha de projeção entre um ponto mais próximo e um ponto mais distante da referida linha de projeção está ocupada ou não.
4. Método ou dispositivo, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que a referida informação é um bit de ocupação.
5. Método ou dispositivo, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que o método adicionalmente compreende ou o pelo menos um processador é adicionalmente configurado para obter pelo menos um bit de ocupação a partir de pelo menos uma palavra-código.
6. Método ou dispositivo, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a palavra-código é obtida a partir dos dados de imagem.
7. Método ou dispositivo, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que o método adicionalmente compreende ou o pelo menos um processador é adicionalmente configurado para obter, a partir de um fluxo de bits, uma informação indicando se pelo menos um atributo de um ponto, posicionado entre um ponto mais próximo e um ponto mais distante em uma mesma linha de projeção, é obtido a partir de dados de imagem ou de pelo menos um atributo de outros pontos da nuvem de pontos.
8. Método, CARACTERIZADO por compreender: - projetar ortogonalmente pelo menos um ponto de uma nuvem de pontos ao longo de linhas de projeção; e - para pelo menos dois pontos de uma mesma linha de projeção, sinalizar, em um fluxo de bits, uma informação indicando se uma posição da referida linha de projeção entre um ponto mais próximo e um ponto mais distante da referida linha de projeção está ocupada ou não.
9. Dispositivo, CARACTERIZADO por compreender pelo menos um processador configurado para: - projetar ortogonalmente pelo menos um ponto de uma nuvem de pontos ao longo de linhas de projeção; e - para pelo menos dois pontos de uma mesma linha de projeção, sinalizar, em um fluxo de bits, uma informação indicando se uma posição da referida linha de projeção entre um ponto mais próximo e um ponto mais distante da referida linha de projeção está ocupada ou não.
10. Sinal, CARACTERIZADO por compreender informação codificando ponto de uma nuvem de pontos, uma informação indicando se uma posição de uma linha de projeção entre um ponto mais próximo e um ponto mais distante da referida linha de projeção está ocupada ou não.
11. Método, de acordo com a reivindicação 8, ou dispositivo de acordo com a reivindicação 9, ou sinal de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que a dita informação é um bit de ocupação.
12. Método ou dispositivo ou sinal, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que os bits de ocupação ao longo de uma mesma linha de projeção são concatenados em uma palavra-código.
13. Método ou dispositivo ou sinal, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que a palavra-código é codificada na forma de dados de imagem.
14. Método, de acordo com uma das reivindicações 8 ou 11 a 13, ou dispositivo de acordo com uma das reivindicações 9 ou 11 a 13, ou sinal de acordo com uma das reivindicações 10 a 13, CARACTERIZADO pelo fato de que uma informação é sinalizada indicando se pelo menos um atributo de um ponto, posicionado entre um ponto mais próximo e um ponto mais distante em uma mesma linha de projeção, é codificado na forma de dados de imagem ou não.
15. Produto de programa de computador incluindo instruções, CARACTERIZADO por, quando o programa é executado por um ou mais processadores, fazer com que o um ou mais processadores executem um método de acordo com qualquer uma das reivindicações 1, 3 a 8, 11 a 14.
16. Meio não-temporário legível por computador, CARACTERIZADO por incluir instruções para fazer com que um ou mais processadores executem o método de acordo com qualquer uma das reivindicações 1, 3 a 8, 11 a 14.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18305430 | 2018-04-11 | ||
EP18305430.3 | 2018-04-11 | ||
EP18306133.2A EP3614673A1 (en) | 2018-08-23 | 2018-08-23 | A method and apparatus for encoding/decoding a point cloud representing a 3d object |
EP18306133.2 | 2018-08-23 | ||
PCT/US2019/025130 WO2019199510A1 (en) | 2018-04-11 | 2019-04-01 | A method and apparatus for encoding/decoding a point cloud representing a 3d object |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112020019540A2 true BR112020019540A2 (pt) | 2021-01-05 |
Family
ID=66049731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112020019540-5A BR112020019540A2 (pt) | 2018-04-11 | 2019-04-01 | Método e aparelho para codificação/decodificação de uma nuvem de pontos representando um objeto 3d |
Country Status (10)
Country | Link |
---|---|
US (1) | US11856222B2 (pt) |
EP (1) | EP3777180B1 (pt) |
JP (1) | JP7389751B2 (pt) |
KR (1) | KR20200140825A (pt) |
CN (1) | CN112042201B (pt) |
BR (1) | BR112020019540A2 (pt) |
DK (1) | DK3777180T3 (pt) |
HU (1) | HUE063585T2 (pt) |
RU (1) | RU2767771C1 (pt) |
WO (1) | WO2019199510A1 (pt) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102477031B1 (ko) * | 2018-04-20 | 2022-12-14 | 삼성전자주식회사 | 3차원 데이터를 프로세싱하기 위한 방법 및 장치 |
CN110662087B (zh) | 2018-06-30 | 2021-05-11 | 华为技术有限公司 | 点云编解码方法和编解码器 |
WO2020145668A1 (ko) * | 2019-01-08 | 2020-07-16 | 삼성전자주식회사 | 3차원 컨텐츠의 처리 및 전송 방법 |
JP7560451B2 (ja) * | 2019-05-10 | 2024-10-02 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
CN113596432B (zh) * | 2021-07-30 | 2024-04-30 | 成都市谛视科技有限公司 | 可变视角的3d视频制作方法、装置、设备及存储介质 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003136B1 (en) | 2002-04-26 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Plan-view projections of depth image data for object tracking |
RU2421933C2 (ru) | 2009-03-24 | 2011-06-20 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Система и способ формирования и воспроизведения трехмерного видеоизображения |
KR101284137B1 (ko) | 2012-02-28 | 2013-07-10 | 한국과학기술원 | 3차원 물체의 깊이 정보 표현 및 기록 시스템 |
US20140119456A1 (en) * | 2012-11-01 | 2014-05-01 | Microsoft Corporation | Encoding video into lower resolution streams |
US20140204088A1 (en) | 2013-01-18 | 2014-07-24 | Microsoft Corporation | Surface codec using reprojection onto depth maps |
US9269187B2 (en) * | 2013-03-20 | 2016-02-23 | Siemens Product Lifecycle Management Software Inc. | Image-based 3D panorama |
CA2948903C (en) * | 2014-05-13 | 2020-09-22 | Pcp Vr Inc. | Method, system and apparatus for generation and playback of virtual reality multimedia |
US10574974B2 (en) | 2014-06-27 | 2020-02-25 | A9.Com, Inc. | 3-D model generation using multiple cameras |
WO2016003340A1 (en) | 2014-07-03 | 2016-01-07 | Telefonaktiebolaget L M Ericsson (Publ) | Encoding and decoding of light fields |
US9530215B2 (en) | 2015-03-20 | 2016-12-27 | Qualcomm Incorporated | Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology |
US20160307368A1 (en) | 2015-04-17 | 2016-10-20 | Lytro, Inc. | Compression and interactive playback of light field pictures |
EP3151559A1 (en) * | 2015-09-29 | 2017-04-05 | Thomson Licensing | Method for coding and decoding a plurality of picture blocks and corresponding devices |
US20170214943A1 (en) | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Research Laboratories, Inc. | Point Cloud Compression using Prediction and Shape-Adaptive Transforms |
EP3249921A1 (en) * | 2016-05-24 | 2017-11-29 | Thomson Licensing | Method, apparatus and stream for immersive video format |
US11297346B2 (en) * | 2016-05-28 | 2022-04-05 | Microsoft Technology Licensing, Llc | Motion-compensated compression of dynamic voxelized point clouds |
US20180020238A1 (en) * | 2016-07-15 | 2018-01-18 | Mediatek Inc. | Method and apparatus for video coding |
CN108541322B (zh) | 2016-08-29 | 2021-09-14 | 北京清影机器视觉技术有限公司 | 三维视觉测量数据的处理方法和装置 |
WO2018050529A1 (en) | 2016-09-13 | 2018-03-22 | Thomson Licensing | Method, apparatus and stream for immersive video format |
EP3301914A1 (en) * | 2016-09-30 | 2018-04-04 | Thomson Licensing | Method and apparatus for encoding and decoding a large field of view video |
EP3340629A1 (en) | 2016-12-21 | 2018-06-27 | Thomson Licensing | Method and apparatus for embedding key information in an image |
US10783668B2 (en) * | 2017-12-22 | 2020-09-22 | Samsung Electronics Co., Ltd. | Handling duplicate points in point cloud compression |
TWI815842B (zh) | 2018-01-16 | 2023-09-21 | 日商索尼股份有限公司 | 影像處理裝置及方法 |
EP3741118A1 (en) | 2018-01-19 | 2020-11-25 | InterDigital VC Holdings, Inc. | Processing a point cloud |
-
2019
- 2019-04-01 CN CN201980025275.1A patent/CN112042201B/zh active Active
- 2019-04-01 RU RU2020136826A patent/RU2767771C1/ru active
- 2019-04-01 BR BR112020019540-5A patent/BR112020019540A2/pt unknown
- 2019-04-01 HU HUE19716055A patent/HUE063585T2/hu unknown
- 2019-04-01 DK DK19716055.9T patent/DK3777180T3/da active
- 2019-04-01 WO PCT/US2019/025130 patent/WO2019199510A1/en unknown
- 2019-04-01 KR KR1020207028659A patent/KR20200140825A/ko not_active Application Discontinuation
- 2019-04-01 EP EP19716055.9A patent/EP3777180B1/en active Active
- 2019-04-01 JP JP2020548994A patent/JP7389751B2/ja active Active
- 2019-04-01 US US17/046,630 patent/US11856222B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2021518681A (ja) | 2021-08-02 |
WO2019199510A1 (en) | 2019-10-17 |
HUE063585T2 (hu) | 2024-01-28 |
US20210112277A1 (en) | 2021-04-15 |
EP3777180B1 (en) | 2023-08-09 |
JP7389751B2 (ja) | 2023-11-30 |
DK3777180T3 (da) | 2023-10-02 |
KR20200140825A (ko) | 2020-12-16 |
US11856222B2 (en) | 2023-12-26 |
RU2767771C1 (ru) | 2022-03-21 |
CN112042201B (zh) | 2024-06-25 |
EP3777180A1 (en) | 2021-02-17 |
CN112042201A (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112020019540A2 (pt) | Método e aparelho para codificação/decodificação de uma nuvem de pontos representando um objeto 3d | |
US20200153885A1 (en) | Apparatus for transmitting point cloud data, a method for transmitting point cloud data, an apparatus for receiving point cloud data and/or a method for receiving point cloud data | |
JP7431742B2 (ja) | 三次元物体を表すポイントクラウドを符号化/復号する方法及び装置 | |
EP1566769B1 (en) | Method and apparatus for encoding and decoding 3D data | |
JP7425899B2 (ja) | 点群の符号化及び復号方法 | |
ES2977201T3 (es) | Dispositivo de transmisión de datos de nube de puntos, método de transmisión de datos de nube de puntos, dispositivo de recepción de datos de nube de puntos y método de recepción de datos de nube de puntos | |
WO2019158821A1 (en) | An apparatus, a method and a computer program for volumetric video | |
KR20240095364A (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
CN111095362A (zh) | 用于编码点云的方法和设备 | |
BR112020020003A2 (pt) | método e dispositivo para codificar a geometria de uma nuvem de pontos | |
WO2019011917A1 (en) | METHOD AND DEVICE FOR ENCODING A POINT CLOUD | |
US11908169B2 (en) | Dense mesh compression | |
KR20210096234A (ko) | 호모그래피 변환을 사용하는 포인트 클라우드 코딩 | |
US12003769B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN116349229A (zh) | 点云数据发送装置和方法、点云数据接收装置和方法 | |
WO2023144445A1 (en) | A method, an apparatus and a computer program product for video encoding and video decoding | |
EP3614672A1 (en) | A method and apparatus for encoding/decoding a point cloud representing a 3d object | |
EP3614673A1 (en) | A method and apparatus for encoding/decoding a point cloud representing a 3d object | |
US20230171427A1 (en) | Method, An Apparatus and a Computer Program Product for Video Encoding and Video Decoding | |
WO2019211519A1 (en) | A method and an apparatus for volumetric video encoding and decoding | |
US20240177355A1 (en) | Sub-mesh zippering | |
EP4451691A1 (en) | Transmission device for point cloud data and method performed by transmission device, and reception device for point cloud data and method performed by reception device | |
WO2023144439A1 (en) | A method, an apparatus and a computer program product for video coding | |
WO2023047021A2 (en) | A method, an apparatus and a computer program product for video encoding and video decoding | |
WO2023175243A1 (en) | A method, an apparatus and a computer program product for video encoding and video decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B350 | Update of information on the portal [chapter 15.35 patent gazette] |