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 PDF

Info

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
Application number
BR112020019540-5A
Other languages
English (en)
Inventor
Julien Ricard
Joan Llach Pinsach
Kangying Cai
Original Assignee
Interdigital Vc Holdings, Inc.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from EP18306133.2A external-priority patent/EP3614673A1/en
Application filed by Interdigital Vc Holdings, Inc. filed Critical Interdigital Vc Holdings, Inc.
Publication of BR112020019540A2 publication Critical patent/BR112020019540A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/184Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range 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)

REIVINDICAÇÕES
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.
BR112020019540-5A 2018-04-11 2019-04-01 Método e aparelho para codificação/decodificação de uma nuvem de pontos representando um objeto 3d BR112020019540A2 (pt)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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]