BR112020020003A2 - método e dispositivo para codificar a geometria de uma nuvem de pontos - Google Patents

método e dispositivo para codificar a geometria de uma nuvem de pontos Download PDF

Info

Publication number
BR112020020003A2
BR112020020003A2 BR112020020003-4A BR112020020003A BR112020020003A2 BR 112020020003 A2 BR112020020003 A2 BR 112020020003A2 BR 112020020003 A BR112020020003 A BR 112020020003A BR 112020020003 A2 BR112020020003 A2 BR 112020020003A2
Authority
BR
Brazil
Prior art keywords
depth
image
values
bitstream
encoded
Prior art date
Application number
BR112020020003-4A
Other languages
English (en)
Inventor
Celine GUEDE
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
Application filed by Interdigital Vc Holdings, Inc. filed Critical Interdigital Vc Holdings, Inc.
Publication of BR112020020003A2 publication Critical patent/BR112020020003A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • 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/103Selection of coding mode or of prediction mode
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/17Methods 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 an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

MÉTODO E DISPOSITIVO PARA CODIFICAR A GEOMETRIA DE UMA NUVEM DE PONTOS. Os presentes princípios se referem a um método e método de dispositivo para codificar valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos sobre um plano de projeção. Os presentes princípios também se referem a um método e dispositivo para decodificar uma nuvem de pontos, um programa legível por computador e um sinal de vídeo.

Description

“MÉTODO E DISPOSITIVO PARA CODIFICAR A GEOMETRIA DE UMA NUVEM DE PONTOS” CAMPO
[001] Os presentes princípios se referem geralmente à codificação e decodifi- cação de uma nuvem de pontos que representa a superfície externa de um objeto 3D.
De modo particular, porém não exclusivo, o campo da técnica dos presentes princípios se referem à codificação/decodificação de imagens de profundidade que representam a geometria de tal nuvem de pontos.
ANTECEDENTES
[002] A presente seção se destina a introduzir o leitor a vários aspectos da técnica, que podem estar relacionados a vários aspectos dos presentes princípios que são descritos e/ou reivindicados abaixo. Acredita-se que essa discussão seja útil para dotar o leitor de informações básicas para facilitar um melhor entendimento dos vários aspectos dos presentes princípios. Consequentemente, deve-se compreender que essas declarações devem ser lidas sob essa luz, e não como admissões da técnica anterior.
[003] Uma nuvem de pontos é um conjunto de pontos de dados em algum sistema de coordenadas. Em um sistema de coordenadas tridimensional (espaço 3D), esses pontos geralmente se destinam a representar a superfície externa de um objeto 3D. Cada ponto de uma nuvem de pontos, frequentemente é definido por sua localização (coordenadas X, Y e Z no espaço 3D) e, possivelmente por outros atributos associados, tal como uma cor, representada no espaço de cores RGB ou YUV, por exemplo, uma transparência, uma reflectância, um vetor normal de dois componentes, etc.
[004] É usual representar uma nuvem de pontos como um conjunto de pontos de 6 componentes (X, Y, Z, R, G, B) ou, de modo equivalente, (X, Y, Z, Y, U, V) em que (X,Y,Z) define as coordenadas de um ponto colorido em um espaço 3D e (R,G,B) ou
(Y,U,V) define uma cor desse ponto colorido.
[005] As nuvens de pontos podem ser estáticas ou dinâmicas dependendo se a nuvem evolui ou não em relação ao tempo. Deve-se notar que no caso de uma nuvem de pontos dinâmica, o número de pontos não é constante, pelo contrário, geralmente evolui com o tempo. Uma nuvem de pontos dinâmica é, desse modo, uma lista ordenada por tempo do conjunto de pontos.
[006] De modo prático, as nuvens de pontos podem ser usadas para vários propósitos, tais como patrimônio cultural/edifícios em que objetos como estátuas ou edifícios são digitalizados em 3D a fim de compartilhar a configuração espacial do objeto sem enviar ou visitar o mesmo. Além disso, é um modo de assegurar a preservação do conhecimento do objeto no caso em que o mesmo pode ser destruído; por exemplo, um templo por meio de um terremoto. Tais nuvens de pontos são tipicamente estáticas, coloridas e enormes.
[007] Outro caso de uso é na topografia e cartografia em que usando representações 3D, os mapas não se limitam ao plano e podem incluir o relevo. O Google Maps é agora um bom exemplo de mapas 3D, porém usa malhas em vez de nuvens de pontos. No entanto, as nuvens de pontos podem ser um formato de dados adequado para mapas 3D e tais nuvens de pontos são tipicamente estáticas, coloridas e enormes.
[008] A indústria automotiva e carros autônomos são também domínios nos quais as nuvens de pontos podem ser usadas. Os carros autônomos devem ser capazes de “sondar” seu ambiente para tomar uma boa decisão de direção com base na realidade de sua vizinhança imediata. Os sensores típicos como LIDARs produzem nuvens de pontos dinâmicas que são usadas pelo mecanismo de decisão. Essas nuvens de pontos não se destinam a ser vistas por um ser humano e elas são tipicamente pequenas, não necessariamente coloridas, e dinâmicas com uma alta frequência de captura. Elas podem ter outros atributos como a reflectância fornecida pelo Lidar à medida que esse atributo é uma boa informação sobre o material do objeto detectado e pode ajudar na decisão.
[009] A realidade virtual e os mundos imersivos se tornaram um tópico do momento recentemente e previsto por muitos como o futuro do vídeo plano 2D. A ideia básica é imergir o observador em um ambiente ao seu redor, em oposição à TV padrão, onde ele só pode olhar para o mundo virtual à sua frente. Existem várias gradações na imersividade dependendo da liberdade do observador no ambiente. A nuvem de pontos é um bom candidato de formato para distribuir mundos de Realidade Virtual (ou VR). Eles podem ser estáticos ou dinâmicos e são tipicamente de um tamanho médio, digamos, não mais do que milhões de pontos de cada vez.
[010] A compactação de nuvem de pontos será bem-sucedida no armazenamento/transmissão de objetos 3D para mundos imersivos apenas se o tamanho do fluxo de bits for baixo o suficiente para permitir um armazenamento/transmissão prático para o usuário final.
[011] É crucial que seja capaz de distribuir nuvens de pontos dinâmicas para o usuário final com um consumo razoável de taxa de bits mantendo, ao mesmo tempo, uma qualidade de experiência aceitável (ou preferencialmente muito boa). A compactação eficiente dessas nuvens de pontos dinâmicas é um ponto principal a fim de tornar a cadeia de distribuição de mundos imersivos prática.
[012] As técnicas de compactação nuvem de pontos baseada em imagem estão se tornando cada vez mais populares devido à sua combinação de eficiência de compactação e baixa complexidade. Elas prosseguem em duas etapas principais: primeiro, elas projetam (projeção ortogonal) a nuvem de pontos, isto é os pontos 3D sobre as imagens 2D. Por exemplo, pelo menos uma imagem de profundidade representa a geometria da nuvem de pontos, isto é as coordenadas espaciais dos pontos 3D em um espaço 3D e pelo menos uma imagem de textura representa um atributo associado aos pontos 3D da nuvem de pontos, por exemplo informações de textura/cor associadas aqueles pontos 3D. A seguir, essas técnicas codificam tais imagens de profundidade e textura com codificadores de vídeo herdados.
[013] As técnicas de compactação de nuvem de pontos baseada em imagem alcançam bom desempenho de compactação ao aproveitar o desempenho do codificador de vídeo 2D, como, por exemplo HEVC (“ITU-T H.265 Telecommunication standardization sector of ITU (10/2014), series H: audiovisual and multimedia systems, infrastructure of audiovisual services - coding of moving video, High efficiency video coding, Recommendation ITU-T H.265”), enquanto elas mantêm, ao mesmo tempo, a complexidade baixa com o uso de esquemas de projeção simples.
[014] Um dos desafios das técnicas de compactação de nuvem de pontos baseada em imagem é que uma nuvem de pontos pode não ser adequada para projeção sobre imagens, especialmente quando a distribuição de pontos segue uma superfície com muitas dobras (regiões côncavas/convexas, como em peças de vestuário) ou quando a distribuição de pontos não segue uma superfície de forma alguma (como no pelo ou cabelo). Nessas situações, as técnicas de compactação de nuvem de pontos baseada em imagem sofrem de baixa eficiência de compactação (projeções muito pequenas são necessárias, reduzindo a eficiência da compactação de vídeo 2D) ou má qualidade (devido à dificuldade de projetar a nuvem de pontos sobre uma superfície).
[015] Uma das abordagens usadas no estado da técnica para aliviar esse problema consiste na projeção de múltiplas informações de geometria e textura sobre uma mesma localização espacial (pixel) de uma imagem. Isso significa que várias imagens de profundidade e/ou textura podem ser geradas por ponto 3D da nuvem de pontos.
[016] Esse é o caso, por exemplo, do assim chamado codificador de nuvem de pontos de Modelo de Teste Categoria 2 (TMC2), conforme definido na ISO/IEC JTC1/SC29/WG11/N17248, Macau, China, outubro de 2017, em que a nuvem de pontos é ortogonalmente projetada sobre um plano de projeção. Dois valores de profundidade são, então associados por coordenada do dito plano de projeção: um representativo do valor de profundidade associado ao ponto mais próximo (menos valor de profundidade) e o outro representativo do valor de profundidade do ponto mais distante (maior valor de profundidade). Uma primeira imagem de profundidade é, então gerada a partir dos menores valores de profundidade (D0) e uma segunda imagem de profundidade é gerada a partir da diferença entre valores de profundidade maiores (D1) e menores (D0) que satisfazem D1-D0 <= SurfaceThickness, em que SurfaceThickness é a espessura de superfície máxima.
[017] As imagens de profundidade e metadados associados são, então codificados e decodificados. A geometria da nuvem de pontos é, então reconstruída a partir das imagens de profundidade decodificadas. A seguir, cor/textura é atribuída a cada ponto da nuvem de pontos reconstruída e as imagens de textura (aqui duas) são geradas a partir das ditas cores/texturas atribuídas. As duas imagens de textura são, então codificadas.
[018] Desse modo, a segunda imagem de profundidade contém recursos de alta frequência semelhantes a contornos significativos que são muito difíceis de codificar.
SUMÁRIO
[019] A seguir apresenta-se um sumário simplificado dos presentes princípios, a fim de fornecer um entendimento básico de alguns aspectos dos presentes princípios. Este sumário não é uma visão geral extensiva dos presentes princípios. O mesmo não se destina a identificar elementos principais ou críticos dos presentes princípios. O seguinte sumário apresenta meramente alguns aspectos dos presentes princípios de uma forma simplificada como um prelúdio parara a descrição mais detalhada fornecida abaixo.
[020] Os presentes princípios estabelecidos para remediar pelo menos uma das desvantagens da técnica anterior com um método para codificar valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos sobre um plano de projeção que compreende:
[021] - obter uma primeira imagem de profundidade codificada codificando-se uma primeira imagem de profundidade em um fluxo de bits, sendo que a dita primeira imagem de profundidade representa valores de profundidade de pontos mais próximos da nuvem de pontos;
[022] - determinar e codificar, no fluxo de bits, um modo de codificação de profundidade por região de imagem, sendo que o dito modo de codificação de profundidade indica se os valores de profundidade em uma região de imagem de uma segunda imagem de profundidade também são codificados no fluxo de bits, sendo que a dita segunda imagem de profundidade representa valores de profundidade de pontos mais distantes da nuvem de pontos; e
[023] - se pelo menos um modo de codificação de profundidade indica que os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits, codificando pelo menos parcialmente a segunda imagem de profundidade no fluxo de bits.
[024] De acordo com uma modalidade, a determinação se os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits compreende:
[025] - obter uma primeira imagem de profundidade decodificada decodificando-se a primeira imagem de profundidade codificada e uma segunda imagem de profundidade decodificada codificando-se e decodificando-se a segunda imagem de profundidade;
[026] - calcular um primeiro custo de distorção de taxa levando-se em consideração uma primeira distância e uma primeira taxa de bits, sendo que a primeira distância é calculada entre os valores de profundidade em uma região de imagem colocalizada da dita primeira imagem de profundidade decodificada e os valores de profundidade em uma região de imagem colocalizada da segunda imagem de profundidade decodificada, sendo que a dita taxa de dados é calculada para codificar a dita segunda imagem de profundidade;
[027] - calcular um segundo custo de distorção de taxa levando-se em consideração uma segunda distância, sendo que a taxa de dados é considerada aqui como sendo nula, sendo que a dita segunda distância é calculada entre os valores de profundidade da região de imagem colocalizada da dita primeira imagem de profundidade decodificada e os valores de profundidade interpolados obtidos interpolando-se os valores de profundidade na dita primeira imagem de profundidade decodificada;
[028] - se o segundo custo de distorção de taxa for menor que o primeiro custo de distorção de taxa, então o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na região de imagem colocalizada da segunda imagem de profundidade não são codificados no fluxo de bits, de outro modo, o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na região de imagem colocalizada da segunda imagem de profundidade são codificados no fluxo de bits.
[029] De acordo com uma modalidade, a determinação se os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits compreende:
[030] - calcular os valores de profundidade interpolados para a dita região de imagem da segunda imagem de profundidade interpolando-se os valores de profundidade na dita primeira imagem de profundidade;
[031] - calcular uma distância entre os valores de profundidade na dita região de imagem da segunda imagem de profundidade e os valores de profundidade interpolados obtidos interpolando-se os valores de profundidade em uma primeira imagem de profundidade decodificada obtida decodificando-se a primeira imagem de profundidade codificada;
[032] - se a distância for menor que um limiar, então o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade não são codificados no fluxo de bits, de outro modo, o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade são codificados no fluxo de bits.
[033] De acordo com uma modalidade, a primeira e a segunda distâncias acima ou a distância acima é computada entre pelo menos uma parte de uma nuvem de pontos reconstruída e a parte correspondente da nuvem de pontos, sendo que pelo menos a dita parte da nuvem de pontos é reconstruída a partir da primeira imagem de profundidade decodificada e uma segunda imagem de profundidade.
[034] De acordo com uma modalidade, a dita pelo menos parte da nuvem de pontos é reconstruída a partir de valores de profundidade na dita região de imagem e a partir de valores de profundidade em pelo menos uma região de imagem anteriormente considerada.
[035] De acordo com uma modalidade, se o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade não são codificados no fluxo de bits, os valores de profundidade de pixels na dita região de imagem da segunda imagem de profundidade são substituídos por um valor constante antes de codificar, pelo menos parcialmente, a segunda imagem de profundidade.
[036] De acordo com uma modalidade, o modo de codificação de profundidade é codificado como metadados associados à reconstrução da nuvem de pontos cuja geometria é representada pelas ditas primeira e segunda imagens de profundidade.
[037] Os presentes princípios estabelecidos para remediar pelo menos uma das desvantagens da técnica anterior com um método para decodificar valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos original sobre um plano de projeção que compreende:
[038] - obter uma primeira imagem de profundidade decodificada decodificando-se um fluxo de bits;
[039] - obter um modo de codificação de profundidade associado a uma região de imagem de uma segunda imagem de profundidade decodificada a partir do fluxo de bits;
[040] - se o modo de codificação de profundidade indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade decodificada são decodificados no fluxo de bits, decodificando pelo menos parcialmente a segunda imagem de profundidade a partir do fluxo de bits,
[041] - de outro modo, calcular os valores de profundidade interpolados na dita região de imagem da segunda imagem de profundidade decodificada interpolando-se os valores de profundidade na primeira imagem de profundidade decodificada.
[042] De acordo com uma modalidade, toda a segunda imagem de profundidade é codificada/decodificada no/a partir do fluxo de bits quando quando pelo menos um modo de codificação de profundidade indica que os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados/decodificados no fluxo de bits.
[043] De acordo com uma modalidade, o tamanho e o formato de uma região de imagem da segunda imagem de profundidade são o tamanho e o formato da dita segunda imagem de profundidade.
[044] De acordo com outros de seus aspectos, os presentes princípios se referem a um dispositivo, um produto de programa de computador, um meio legível por computador não transitório e um sinal de vídeo.
[045] A natureza específica dos presentes princípios, assim como outros objetivos, vantagens, recursos e usos dos presentes princípios irá se tornar evidente a partir da seguinte descrição dos exemplos tomados em conjunto com os desenhos anexos.
BREVE DESCRIÇÃO DOS DESENHOS
[046] Nos desenhos, os exemplos dos presentes princípios são ilustrados.
Isso mostra:
[047] A Figura mostra esquematicamente um diagrama das etapas do método para codificar a geometria de uma nuvem de pontos representada por uma primeira e uma segunda imagens de profundidade de acordo com um exemplo dos presentes princípios;
[048] A Figura 2 mostra esquematicamente um diagrama da etapa 120 do método da Figura 1, de acordo com uma modalidade dos presentes princípios;
[049] A Figura 3 mostra esquematicamente um diagrama da etapa 120 do método da Figura 1, de acordo com uma modalidade dos presentes princípios;
[050] A Figura 4 mostra esquematicamente um diagrama das etapas do método para decodificar a geometria de uma nuvem de pontos a partir de uma primeira e uma segunda imagens de profundidade que representam valores de profundidade diferentes de pontos ortogonalmente projetados de uma nuvem de pontos original, de acordo com um exemplo dos presentes princípios;
[051] A Figura 5 mostra esquematicamente o método para codificar a geometria e a textura de uma nuvem de pontos conforme definido na técnica anterior (TMC2);
[052] A Figura 6 mostra esquematicamente um exemplo de uso dos métodos 100 e 200 no método de codificação da Figura 5;
[053] A Figura 7 mostra esquematicamente o método para decodificar a geometria e a textura de uma nuvem de pontos conforme definido na técnica anterior
(TMC2);
[054] A Figura 8 mostra esquematicamente um exemplo de uso do método 200 no método de decodificação da Figura 7;
[055] A Figura 9 mostra um exemplo de uma arquitetura de um dispositivo, de acordo com um exemplo dos presentes princípios; e
[056] A Figura 10 mostra dois dispositivos remotos que se comunicam através de uma rede de comunicação, de acordo com um exemplo dos presentes princípios; e
[057] A Figura 11 mostra a sintaxe de um sinal, de acordo com um exemplo dos presentes princípios.
[058] Elementos similares ou iguais são referenciados com os mesmos números de referência.
DESCRIÇÃO DE EXEMPLO DOS PRESENTES PRINCÍPIOS.
[059] Os presentes princípios serão descritos mais completamente doravante com referência às Figuras anexas, em que os exemplos dos presentes princípios são mostrados. Os presentes princípios podem ser, entretanto, incorporados em muitas formas alternativas e não devem ser interpretados como limitados aos exemplos apresentados no presente documento. Consequentemente, embora os presentes princípios sejam suscetíveis a várias modificações e formas alternativas, os exemplos específicos dos mesmos são mostrados a título de exemplo nos desenhos e serão descritos no presente documento em detalhes. Deve-se compreender, no entanto, que não há intenção de limitar os presentes princípios às formas particulares reveladas, mas, pelo contrário, a revelação deve cobrir todas as modificações, equivalentes e alternativas abrangidos pelo espírito e escopo dos presentes princípios, conforme definido pelas reivindicações.
[060] A terminologia usada no presente documento tem o propósito de descrever exemplos particulares apenas e não se destina a ser uma limitação dos presentes princípios. Conforme usado no presente documento, as formas singulares "um", "uma" e "o/a" têm como intenção incluir as formas plurais também, a menos que o contexto claramente indique o contrário. Será adicionalmente entendido que os termos “compreende”, “que compreende”, “inclui” e/ou “que inclui” quando usados neste relatório descritivo, especificam a presença de recursos, números inteiros, etapas, operações, elementos, componentes citados, mas não excluem a presença ou adição de um ou mais outros recursos, números inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos. Além disso, quando um elemento é denominado como sendo “responsivo” ou “conectado” a outro elemento, o meso pode ser diretamente responsivo ou conectado ao outro elemento, ou elementos intervenientes podem estar presentes. Em contraste, quando um elemento é denominado como sendo “diretamente responsivo” ou “diretamente conectado” a outro elemento, não há elementos intervenientes presentes. Conforme usado no presente documento, o termo “e/ou” inclui qualquer uma e todas as combinações de um ou mais itens listados associados e pode ser abreviado como “/”.
[061] Será entendido que, embora os termos primeiro, segundo, etc. possam ser usados no presente documento para descrever vários elementos, esses elementos não devem ser limitados por esses termos. O termos são usados apenas para distinguir um elemento de outro. Por exemplo, um primeiro elemento pode ser chamado de um segundo elemento e, de modo similar, um segundo elemento pode ser chamado de um primeiro elemento, sem se afastar dos ensinamentos dos presentes princípios.
[062] Embora alguns dos diagramas incluam setas nos caminhos de comunicação para mostrar uma direção de comunicação primária, deve-se entender que a comunicação pode ocorrer na direção oposta às setas mostradas.
[063] Alguns exemplos são descritos em relação aos diagramas de blocos e fluxogramas operacionais nos quais 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 função (ou funções) lógica especificada. Deve-se observar também que em outras implementações, a função (ou funções) observada nos blocos pode ocorrer fora da ordem observada. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados de maneira substancialmente simultânea ou os blocos, algumas vezes, podem ser executados na ordem inversa, dependendo da funcionalidade envolvida.
[064] A referência, no presente documento, a “de acordo com um exemplo” ou “em um exemplo” significa que um recurso, estrutura ou característica particular descrito em conjunto com o exemplo pode ser incluído em pelo menos uma implementação dos presentes princípios. O aparecimento da expressão “de acordo com um exemplo” ou “em um exemplo” em várias partes do relatório descritivo não necessariamente se refere ao mesmo exemplo, nem são exemplos separados ou alternativos necessariamente exclusivos de maneira mútua de outros exemplos.
[065] Os números de referência que aparecem nas reivindicações são apenas a título de ilustração e não devem ter efeito limitante sobre o escopo das reivindicações.
[066] Embora não explicitamente descritos, os presentes exemplos e variantes podem ser empregados em qualquer combinação ou subcombinação.
[067] Os presentes princípios são descritos para codificar/decodificar a geometria de uma nuvem de pontos a partir de duas imagens de profundidade, porém se estendem à codificação/decodificação de nuvens de pontos (nuvem de pontos temporalmente dinâmica) devido ao fato de que a geometria da sequência de nuvens de pontos é codificada/decodificada por/a partir de duas sequências (vídeo) de imagens de profundidade, sendo que as duas imagens de profundidade associadas a uma nuvem de pontos são codificadas independentemente das duas imagens de profundidade de outra nuvem de pontos da sequência.
[068] Conforme explicado acima, uma nuvem de pontos é ortogonalmente projetada sobre um plano de projeção e duas imagens de profundidade D0 e D1 são obtidas a partir dos valores de profundidade associados aos ditos pontos 3D projetados. D0 é a primeira imagem de profundidade que representa os valores de profundidade dos pontos mais próximos da nuvem de pontos e D1 é a segunda imagem de profundidade que representa os valores de profundidade dos pontos mais distantes da nuvem de pontos. A primeira imagem de profundidade D0 é codificada com o uso, por exemplo, de um codificador de imagem/vídeo herdado.
[069] A seguir, o termo “região de imagem” designa um conjunto de pixels de uma imagem. Esses pixels podem ou não ser pixels adjacentes, porém todos eles compartilham pelo menos uma propriedade comum.
[070] Por exemplo, uma imagem em si pode ser considerada como sendo uma região de imagem. Uma imagem também pode ser dividida em múltiplos blocos e um bloco é, então uma região de imagem.
[071] Uma região de imagem também pode ter um formato não retangular.
Esse é o caso, por exemplo, quando os pixels de uma imagem que têm um mesmo recurso extraído (ou similar) são associados para formar uma região de imagem.
[072] Os exemplos do recurso extraído de uma imagem podem ser uma cor, textura, vetor normal, etc...
[073] A Figura 1 mostra esquematicamente um diagrama das etapas do método 100 para codificar a geometria de uma nuvem de pontos representada por uma primeira (D0) e uma segunda (D1) imagens de profundidade, de acordo com um exemplo dos presentes princípios.
[074] Na etapa 110, a primeira imagem de profundidade D0 é codificada em um fluxo de bits B.
[075] Na etapa 120, um módulo determina um modo de codificação de profundidade DCMi por região de imagem, sendo que o dito modo de codificação de profundidade indica se os valores de profundidade de pixels em uma região de imagem da segunda imagem de profundidade D1 também são codificados no fluxo de bits B. Esse modo de codificação de profundidade é indicado como o modo “explícito” a seguir.
[076] Na etapa 130, um módulo codifica o dito modo de codificação de profundidade DCMi no fluxo de bits B.
[077] Na etapa 140, se pelo menos um modo de codificação de profundidade DCMi indica que os valores de profundidade de pixels em uma região de imagem da segunda imagem de profundidade D1 são codificados no fluxo de bits B (“modo explícito), um módulo codifica pelo menos parcialmente a segunda imagem de profundidade D1 no fluxo de bits B.
[078] As etapas 130 e 140 são repetidas até que cada uma das regiões de imagem I tenha sido considerada.
[079] De acordo com os presentes princípios, um modo de codificação de profundidade adicional é codificado em um fluxo de bits para indicar se uma região de imagem da segunda imagem de profundidade D1 é explicitamente (ou implicitamente) codificada no fluxo de bits. Quando um modo de codificação de profundidade associado a uma região de imagem da segunda imagem de profundidade D1 indica que os valores de profundidade de pixels naquela região de imagem não são codificados no fluxo de bits (modo “implícito”), a taxa de bits é diminuída em comparação com a transmissão eficaz de dados codificados representativo dos ditos valores de profundidade conforme revelado na técnica anterior. Desse modo, a transmissão de um modo de codificação de profundidade por região de imagem aumenta a eficiência de codificação das imagens de profundidade que representam a geometria de uma nuvem de pontos.
[080] De acordo com uma modalidade, o tamanho e o formato de uma região de imagem da segunda imagem de profundidade são o tamanho e o formato da dita segunda imagem de profundidade, isto é a região de imagem é a própria imagem.
[081] Um único modo de codificação de profundidade é, então transmitido para indicar se toda a segunda imagem de profundidade é (ou não) codificada no fluxo de bits.
[082] De acordo com a etapa 140, toda a segunda imagem de profundidade D1 é codificada no fluxo de bits B quando pelo menos um modo de codificação de profundidade DCMi é ajustado para o modo “explícito”.
[083] De acordo com outra modalidade, um modo de codificação de profundidade é atribuído a cada região de imagem da segunda imagem de profundidade.
[084] A dita região de imagem pode ter um formato retangular, por exemplo um bloco da imagem, ou um formato não retangular, tais como patches de profundidade projetados em TMC2.
[085] Essas modalidades aprimoram a eficiência de codificação adaptando-se localmente o modo de codificação de profundidade às características do conteúdo de imagem.
[086] De acordo com uma modalidade da etapa 120, conforme ilustrado na Figura 2, a determinação se os valores de profundidade de pixels em uma região de imagem da segunda imagem de profundidade D1 são codificados no fluxo de bits compreende as seguintes etapas.
[087] Um módulo obtém uma primeira imagem de profundidade decodificada 𝐷0 decodificando-se a primeira imagem de profundidade codificada, e uma segunda imagem de profundidade decodificada 𝐷1 codificando-se e decodificando-se a segunda imagem de profundidade D1.
[088] Uma região de imagem atual da dita primeira imagem de profundidade decodificada 𝐷0 é considerada. Os valores de profundidade de pixels na dita região de imagem atual consistem em um conjunto de valores de profundidade indicados 𝑅0 .
Uma primeira métrica de qualidade Dist0 é calculada entre os valores de profundidade de pixels na dita região de imagem atual 𝑅0 e os valores de profundidade de pixels colocalizados na segunda imagem de profundidade decodificada 𝐷1 , isto é os valores de profundidade de pixels em uma região de imagem colocalizada da segunda imagem de profundidade decodificada, sendo que o dito conjunto de valores de profundidade é indicado como 𝑅1 . Uma taxa de dados RA0 para codificar a dita segunda imagem de profundidade D1 também é calculada.
[089] Um primeiro custo de distorção de taxa Cost0 é, então calculado levando-se em consideração a dita primeira distância Dist0 e a dita primeira taxa de bits RA0.
[090] Um módulo calcula os valores de profundidade interpolados para os pixels da região de imagem colocalizada da segunda imagem de profundidade decodificada 𝐷1 interpolando-se os valores de profundidade de pixels na dita primeira imagem de profundidade decodificada 𝐷0 . O conjunto de valores de profundidade interpolados é indicado como 𝑅1 .
[091] Uma segunda métrica de qualidade Dist1 é calculada entre os valores de profundidade de pixels na dita região de imagem atual 𝑅0 e os valores de profundidade interpolados 𝑅1 .
[092] Um segundo custo de distorção de taxa Cost1 é, então calculado levando-se em consideração a dita segunda distância Dist1, sendo que a taxa de dados é considerada aqui como sendo nula devido ao fato de que a segunda imagem de profundidade não é codificada (transmitida).
[093] Se o segundo custo de distorção de taxa Cost1 for menor que o primeiro custo de distorção de taxa Cost0 então o modo de codificação de profundidade DCMi para a região de imagem atual i é definido como “implícito”, isto é indica que os valores de profundidade na região de imagem atual da segunda imagem de profundidade D1 não são codificados no fluxo de bits. De outro modo, o modo de codificação de profundidade DCMi para a região de imagem atual i é definido como “explícito”, isto é indica que os valores de profundidade na região de imagem atual a segunda imagem de profundidade D1 são codificados no fluxo de bits.
[094] As etapas dessa modalidade são repetidas até que cada uma das regiões de imagem I tenha sido considerada.
[095] Essa modalidade da etapa 120 fornece a melhor compensação de distorção de taxa para determinar se (ou não) os valores de profundidade de pixels em uma região de imagem de uma segunda imagem de profundidade são codificados em um fluxo de bits.
[096] De acordo com uma modalidade alternativa da etapa 120, conforme ilustrado na Figura 3, a determinação se os valores de profundidade de pixels em uma região de imagem da segunda imagem de profundidade D1 são codificados no fluxo de bits compreende as seguintes etapas.
[097] Um módulo calcula os valores de profundidade interpolados para os pixels da região de imagem colocalizada da segunda imagem de profundidade D1 interpolando-se os valores de profundidade de pixels na dita primeira imagem de profundidade D0. O conjunto de valores de profundidade interpolados é indicado como 𝑅1 .
[098] Uma distância DIST é, então calculada entre os valores de profundidade em uma região de imagem atual i da segunda imagem de profundidade D1, indicada como 𝑅1 , e os ditos valores de profundidade interpolados 𝑅1 .
[099] Se a distância DIST for menor que um limiar TH, então o modo de codificação de profundidade DCMi para a região de imagem atual i é definido como “implícito”, isto é indica que os valores de profundidade na região de imagem atual da segunda imagem de profundidade D1 não são codificados no fluxo de bits. De outro modo, o modo de codificação de profundidade DCMi para a região de imagem atual i é definido como “explícito”, isto é indica que os valores de profundidade na região de imagem atual da segunda imagem de profundidade D1 são codificados no fluxo de bits.
[0100] As etapas dessa modalidade são repetidas até que cada uma das regiões de imagem I tenha sido considerada.
[0101] Essa modalidade alternativa da etapa 120 fornece uma compensação de distorção de taxa subideal devido ao fato de que a métrica é calculada sem processo de codificação/decodificação, porém diminui a complexidade do processo de seleção em comparação com a complexidade da modalidade ideal acima da Figura
2.
[0102] De acordo com uma modalidade, uma distância DIST entre dois conjuntos de valores de profundidade ordenados A e B é uma distância definida por: 2
DIST 𝐴 𝐵 1
[0103] em que 𝐴 , respectivamente 𝐵 , designa o jésimo valor de profundidade do conjunto ordernado A, respectivamente B, de valores de profundidade J.
[0104] A ordenação de um conjunto de valores significa que os valores de profundidade 𝐴 e 𝐵 representam diferentes valores de profundidade de pixels colocalizados em duas imagens de profundidade distintas.
[0105] Uma distância DIST não se limita a essa modalidade e pode se estender a qualquer outra métrica bem conhecida para computar uma distância entre dois conjuntos de valores J, tal como, por exemplo, a soma de diferenças absolutas, uma média/máxima/mínima das diferenças, etc.
[0106] De acordo com uma modalidade, uma distância DIST é computada entre pelo menos uma parte de uma nuvem de pontos reconstruída e a parte correspondente da nuvem de pontos original.
[0107] Como um exemplo, a distância DIST é definida pela ISO/IEC JTC1/SC29/WG1 MPEG2017/N16763, Hobart, abril de 2017, Anexo B.
[0108] A dita pelo menos parte da nuvem de pontos é reconstruída a partir da primeira imagem de profundidade decodificada e de uma segunda imagem de profundidade.
[0109] De acordo com uma modalidade, a dita pelo menos parte da nuvem de pontos é reconstruída a partir de valores de profundidade de pixels em uma região de imagem.
[0110] De acordo com uma modalidade, a dita pelo menos parte da nuvem de pontos é reconstruída a partir de valores de profundidade de pixels em uma região de imagem atual e a partir de valores de profundidade de pixels em pelo menos uma região de imagem anteriormente considerada.
[0111] Por exemplo, de acordo com essa modalidade, uma segunda imagem de profundidade “temporária” é inicializada com um valor constante. Então, os valores de profundidade de pixels da dita segunda imagem de profundidade temporária são iterativamente substituídos por valores de profundidade da segunda imagem de profundidade codificada/decodificada quando uma região de imagem atual for explicitamente codificada (modo “explícito”), ou ao preencher o valor de profundidade do ponto vizinho mais próximo anteriormente codificado de acordo com o modo “explícito”.
[0112] Desse modo, a nuvem de pontos reconstruída que depende da codificação dos valores de profundidade de pixels nas regiões de imagem anteriormente consideradas se torna similar à nuvem de pontos reconstruída.
[0113] Note que nessa modalidade, a imagem de profundidade “temporária” não é codificada no fluxo de bits. A segunda imagem de profundidade é ainda codificada de acordo com o método da Figura 1.
[0114] De acordo com uma modalidade da etapa 140, se o modo de codificação de profundidade DCMi associado a uma região de imagem for definido como “implícito”, os valores de profundidade de pixels na dita região de imagem da segunda imagem de profundidade são substituídos por um valor constante antes de codificar, pelo menos parcialmente, a segunda imagem de profundidade D1.
[0115] De acordo com uma modalidade, o modo de codificação de profundidade DCMi é codificado como metadados associados à reconstrução da nuvem de pontos cuja geometria é representada pela dita primeira e segunda imagens de profundidade.
[0116] Os ditos metadados podem ser associados, por exemplo a cada imagem, comum às duas imagens ou a cada região de imagem, e são usados para reconstruir a geometria de uma nuvem de pontos tanto no lado de codificação como de decodificação, conforme adicionalmente explicado em relação às Figuras 5 e 6.
[0117] De acordo com uma modalidade, o modo de codificação de profundidade DCMi é codificado como um elemento de sintaxe de uma mensagem SEI, por exemplo, anexada a uma unidade NAL associada à primeira imagem de profundidade D0.
Exemplo de DCM em uma Mensagem SEI em HEVC Sintaxe Descritor dcm_info( payloadSize ) { dcm_mode u(8) }
[0118] dcm_mode contém um número de identificação que é usado para identificar o modo de codificação de profundidade. Quando dcm_mode for igual a 0 significa, por exemplo, o modo “explícito“, quando 1 significa o modo “implícito”.
[0119] De acordo com uma variante, o modo de codificação de profundidade também pode se encontrar em uma mensagem SPS ou PPS.
[0120] De acordo com outra modalidade, o modo de codificação de profundidade DCMi é codificado como uma marca d'água incorporada nas imagens de profundidade.
[0121] Como uma variante, o modo de codificação de profundidade DCMi é incorporado como uma marca d'água visível em uma área vazia da primeira imagem de profundidade D0.
[0122] Por exemplo, o bloco de N×N pixels em um canto predefinido da primeira imagem de profundidade D0: todos os pixels de tal bloco são definidos como um mesmo valor binário, por exemplo, 0 (1) para indicar que um modo de codificação de profundidade DCMi é definido como “explícito” (“implícito”).
[0123] No decodificador, um valor médio do bloco é, então calculado e se a dita média estiver mais próxima de 0 do que um valor máximo (todos os valores de pixel iguais a 1) então o bloco decodificado indica que o modo “explícito” é usado, de outro modo, indica que o modo “implícito” é usado.
[0124] De acordo com outra modalidade, o modo de codificação de profundidade DCMi pode ser adicionado às informações binárias de metadados associados à geometria da nuvem de pontos representada pela primeira e pela segunda imagens de profundidade, tal como o mapa de ocupação, conforme definido em TMC2.
[0125] Essa modalidade é mais bem adequada para especificar o modo de codificação de profundidade DCMi na resolução mais precisa do que por imagem.
[0126] Será visto em mais detalhes como isso é implementado em TMC2. A sintaxe de nível superior da versão atual de TMC2 é mostrada na Tabela 1 e Tabela
2. A Tabela 3 fornece a sintaxe do encapsulamento dos fluxos de geometria (profundidade) e textura (cor). A Tabela 4 e a Tabela 5 descrevem a sintaxe detalhada para o mapa de ocupação e bloco para decodificação de índice de patch. E Erro! Fonte de referência não encontrada. e Erro! Fonte de referência não encontrada.
descrevem a sintaxe para a codificação aritmética de valores elementares.
TABELA 1 - Cabeçalho de fluxo de bits Número Mágico ReadUint32 Versão ReadUint32 Tamanho total ReadUint64 GroupOfFrames x N ReadGroupOfFrames
TABELA 2 - Cabeçalho GroupOf Frames Tamanho ReadUint8 Largura ReadUint16 Altura ReadUint16 Resolução de ocupação ReadUint8 radius2Smoothing ReadUint8 neighborCountSmoothing ReadUint8 radius2BoundaryDetection ReadUint8 thresholdSmoothing ReadUint8 losslessGeo ReadUint8 losslessTexture ReadUint8 noAttributes ReadUint8 Fluxo de bits de vídeo ReadVideo() geométrico Mapas de ocupação x M ReadOccupancyMap() Fluxo de bits de vídeo de textura ReadVideo()
TABELA 3 – Função ReadVideo() Tamanho do fluxo de bits de ReadUint32 vídeo Fluxo de bits de vídeo de leitura ReadUint8 x size
TABELA 4 – Função ReadOccupancyMap() Contagem de patch ReadUint32 Precisão de ocupação ReadUint8 Cont. de candidato máx.
ReadUint8 Contagem de Bit U0 ReadUint8 Contagem de Bit V0 ReadUint8 Contagem de Bit U1 ReadUint8 Contagem de Bit V1 ReadUint8 Contagem de Bit D1 ReadUint8
Tamanho de fluxo de bits ReadUint32 aritmético Fluxo de bits aritmético ReadArithmetic()
TABELA 5 – Função ReadArithmetic() Para todos os patches U0 DecodeUInt32(bitCountU0) V0 DecodeUInt32(bitCountV0) U1 DecodeUInt32(bitCountU1) V1 DecodeUInt32(bitCountV1) D1 DecodeUInt32(bitCountD1) deltaSizeU0 DecodeExpGolomb() deltaSizeV0 DecodeExpGolomb()
// Block to patch index decoding For all blocks If number of candidate patches > 1 Candidate index Decode If Candidate index == maxCandidateCount block to patch index DecodeUInt32(bitCountPatch) else Block to patch index = Candidate index
// Occupancy map decoding For all blocks If Block to patch index > 0 isFull decode If not Full bestTraversalOrderIndex decode runCountMinusTwo decode Occupancy decode for (size_t r = 0; r < runCountMinusOne; ++r) {
runLength decode for (size_t j = 0; j <= runLength; ++j) Block[ traversalOrder[ i++ ] ] = occupancy; occupancy = !occupancy; } For all remaining blocks Block[ traversalOrder[ i++ ] ] = occupancy;
[0127] A sintaxe atual codifica os metadados por bloco em duas etapas: primeiro codificando o bloco para o índice de patch para todos os blocos da imagem de patch, então codificando o mapa de ocupação para aqueles blocos que pertencem a um patch.
[0128] O bloco para índice de patch define o índice do patch associado a cada bloco das imagens de textura e profundidade, os blocos formando uma grade quadrada regular. O tamanho do bloco é fornecido pelo parâmetro “Resolução de Ocupação” no cabeçalho do grupo de quadros, e tipicamente definido como 16 pixels.
[0129] O mapa de ocupação, que indica quais pixels a partir das imagens de textura e profundidade representam a nuvem de pontos a ser reconstruída, também é codificado por bloco. Nesse caso, os blocos formam uma grade dentro de cada bloco de “Resolução de Ocupação”, sendo que a grade é do tamanho da “Precisão de Ocupação” e tipicamente definida como 4 pixels.
Exemplo de modo DCM codificado como metadados
[0130] Exemplo de DCM no mapa de ocupação (por imagem(quadro)) – Modificação da Tabela 5 TABELA 6 – Função ReadArithmetic() Para todos os patches U0 DecodeUInt32(bitCountU0)
V0 DecodeUInt32(bitCountV0) U1 DecodeUInt32(bitCountU1) V1 DecodeUInt32(bitCountV1) D1 DecodeUInt32(bitCountD1) deltaSizeU0 DecodeExpGolomb() deltaSizeV0 DecodeExpGolomb() dcm_mode ReadUint8
// Block to patch index decoding For all blocks If number of candidate patches > 1 Candidate index Decode If Candidate index == maxCandidateCount block to patch index DecodeUInt32(bitCountPatch) else Block to patch index = Candidate index
// Occupancy map decoding For all blocks If Block to patch index > 0 isFull decode If not Full bestTraversalOrderIndex decode runCountMinusTwo decode Occupancy decode for (size_t r = 0; r < runCountMinusOne; ++r) { runLength decode for (size_t j = 0; j <= runLength; ++j) Block[ traversalOrder[ i++ ] ] = occupancy; occupancy = !occupancy; } For all remaining blocks
Block[ traversalOrder[ i++ ] ] = occupancy;
[0131] De acordo com uma modalidade, os modos de codificação de profundidade DCMi associados às regiões de imagem são valores binários de uma sequência de valores binários, em que cada valor binário indica um modo de codificação de profundidade DCMi para uma região de imagem. Por exemplo, ‘0’ indica o modo “implícito” e ‘1’ indica o modo “explícito”.
[0132] De acordo com uma modalidade, os métodos de codificação de entropia e comprimento de percurso podem ser usados para codificar a sequência de binários.
[0133] A Figura 4 mostra esquematicamente um diagrama das etapas do método 200 para decodificar a geometria de uma nuvem de pontos a partir de uma primeira (D0) e uma segunda (D1) imagens de profundidade que representam valores de profundidade diferentes de pontos ortogonalmente projetados de uma nuvem de pontos original, de acordo com um exemplo dos presentes princípios.
[0134] Na etapa 210, uma primeira imagem de profundidade decodificada é obtida decodificando-se um fluxo de bits B.
[0135] Na etapa 220, um modo de codificação de profundidade DCMi associado a uma região de imagem atual i de uma segunda imagem de profundidade decodificada é decodificado a partir do fluxo de bits B.
[0136] Na etapa 230, se o modo de codificação de profundidade DCMi indica que os valores de profundidade de pixels na dita região de imagem atual da segunda imagem de profundidade decodificada D1 são codificados no fluxo de bits B (modo “explícito”), um módulo decodifica pelo menos parcialmente a segunda imagem de profundidade D1 a partir do fluxo de bits B.
[0137] De outro modo, na etapa 240, um módulo calcula os valores de profundidade interpolados para os pixels da região de imagem da segunda imagem de profundidade decodificada 𝐷1 interpolando-se os valores de profundidade de pixels na primeira imagem de profundidade decodificada 𝐷0 .
[0138] As etapas 220 a 240 são repetidas até que cada uma das regiões de imagem I tenha sido considerada.
[0139] A geometria da nuvem de pontos é, então reconstruída desprojetando- se a primeira (𝐷0 ) e a segunda (𝐷1 ) imagens de profundidade decodificadas, conforme definido, por exemplo, em TMC2.
[0140] De acordo com uma modalidade do método, calcular os valores de profundidade interpolados para os pixels de uma região de imagem de uma segunda imagem de profundidade interpolando-se os valores de profundidade de pixels em uma primeira imagem de profundidade compreende:
[0141] - Determinar um pixel colocalizado na primeira imagem de profundidade para cada pixel atual da dita região de imagem da segunda imagem de profundidade;
[0142] - Determinar pelo menos um pixel vizinho do dito pixel colocalizado na primeira imagem de profundidade;
[0143] - Calcular um valor de profundidade interpolado para cada pixel atual levando em consideração o dito pelo menos um pixel vizinho na primeira imagem de profundidade.
[0144] De acordo com uma modalidade, a distância espacial entre o pixel colocalizado na primeira imagem de profundidade e o dito pelo menos um pixel vizinho se situa abaixo de um dado limiar.
[0145] De acordo com uma modalidade, o valor de profundidade interpolado de um pixel atual em uma região de imagem da segunda imagem de profundidade é o valor de profundidade do pixel vizinho mais próximo entre o dito pelo menos um pixel vizinho na primeira imagem de profundidade. De acordo com uma modalidade, o valor de profundidade interpolado de um pixel atual em uma região de imagem da segunda imagem de profundidade é o valor de profundidade máximo do dito pelo menos um pixel vizinho na primeira imagem de profundidade.
[0146] De acordo com uma modalidade, o valor de profundidade interpolado de um pixel atual em uma região de imagem da segunda imagem de profundidade é o valor de profundidade mínimo do dito pelo menos um pixel vizinho na primeira imagem de profundidade.
[0147] De acordo com uma modalidade, o valor de profundidade interpolado de um pixel atual em uma região de imagem da segunda imagem de profundidade é a média dos valores de profundidade do dito pelo menos um pixel vizinho na primeira imagem de profundidade.
[0148] A Figura 5 mostra esquematicamente o método para codificar a geometria e a textura de uma nuvem de pontos, conforme definido em TMC2.
[0149] Basicamente, o codificador captura as informações de geometria de uma nuvem de pontos PC original em uma primeira (D0) e uma segunda (D1) imagens de profundidade.
[0150] Como um exemplo, a primeira e a segunda imagens de profundidade são obtidas da seguinte forma no TMC2.
[0151] Os patches de profundidade (conjunto de pontos 3D da nuvem de pontos PC) são obtido agrupando-se os pontos da nuvem de pontos PC de acordo com os vetores normais nesses pontos. Todos os patches de profundidade extraídos são, então projetados sobre uma grade 2D e empacotados enquanto se tenta minimizar o espaço não usado, e assegurando que cada bloco TxT (por exemplo, 16x16) da grade seja associado a um patch exclusivo, em que T é um parâmetro definido pelo usuário que sinalizou para o fluxo de bits.
[0152] As imagens de profundidade são, então geradas explorando-se o mapeamento 3D a 2D computado durante o processo de empacotamento, mais especificamente a posição de empacotamento e o tamanho da área projetada de cada patch. Mais precisamente, permite-se que H(u,v) seja o conjunto de pontos do patch atual que é projetado para o mesmo pixel (u, v). Uma primeira camada, também chamada de camada mais próxima ou a primeira imagem de profundidade D0, armazena o ponto de H(u,v) com o menor valor de profundidade. A segunda camada, denominada como a camada mais distante ou a segunda imagem de profundidade D1, captura o ponto de H(u,v) com o valor de profundidade mais alto dentro do intervalo [D, D+], em que D é um valor de profundidade de pixels na primeira imagem de profundidade D0 e  é um parâmetro definido pelo usuário que descreve a espessura de superfície.
[0153] Uma primeira imagem de profundidade D0 então emite o processo de empacotamento. Um processo de preenchimento também é usado para preencher o espaço vazio entre os patches a fim de gerar uma primeira imagem de profundidade suave em trechos adequada para compactação de vídeo.
[0154] As imagens/camadas de profundidade geradas D0 e D1 são, então armazenadas como quadros de vídeo e compactadas com o uso de qualquer codec de vídeo herdado, tal como HEVC.
[0155] O codificador também captura as informações de textura da nuvem de pontos PC original em duas imagens de textura codificando-se/decodificando-se a primeira e a segunda imagens de profundidade e reconstruindo-se a geometria da nuvem de pontos desprojetando-se a dita primeira e a segunda imagens de profundidade decodificadas 𝐷0 , 𝐷1 . Uma vez reconstruída, uma cor é atribuída (transferência de cor) para cada ponto da nuvem de pontos reconstruída a partir das informações de cor da nuvem de pontos PC original de uma maneira que minimize o erro de codificação de informações de cor.
[0156] De acordo com uma modalidade, para cada ponto reconstruído, a cor de seu ponto mais próximo na nuvem de pontos original é atribuída como sua cor a ser codificada.
[0157] Uma primeira e uma segunda imagens de textura T0, T1 são, então geradas armazenando-se as informações de cor a ser codificada de cada ponto reconstruído na mesma posição que nas imagens de profundidade, isto é (i,u,v).
[0158] A Figura 6 mostra esquematicamente um exemplo de uso dos métodos 100 e 200 no método de codificação da Figura 5.
[0159] De acordo com esse exemplo, a codificação da primeira imagem de profundidade 𝐷0 e a codificação da segunda imagem de profundidade 𝐷1 da Figura 5 são substituídas pelo método de codificação 100 da Figura 1, e a decodificação da segunda imagem de profundidade 𝐷1 da Figura 5 é substituída pelo método de decodificação 200 da Figura 4.
[0160] A Figura 7 mostra esquematicamente o método para decodificar a geometria e a textura de uma nuvem de pontos conforme definido na técnica anterior (TMC2).
[0161] Uma primeira imagem de profundidade decodificada 𝐷0 e uma segunda imagem de profundidade decodificada 𝐷1 são obtidas decodificando-se o fluxo de bits B. Possivelmente, os metadados também são decodificados para reconstruir a geometria da nuvem de pontos 𝑃𝐶 .
[0162] A geometria da nuvem de pontos é, desse modo reconstruída pela desprojeção da dita primeira e segunda imagens de profundidade e, possivelmente dos ditos metadados.
[0163] A Figura 8 mostra esquematicamente um exemplo de uso do método 200 no método de decodificação da Figura 7.
[0164] De acordo com esse exemplo, a decodificação da primeira e da segunda imagens de profundidade da Figura 7 é substituída pelo método de decodificação da Figura 4.
[0165] Nas Figuras 1 a 8, os módulos são unidades funcionais, que podem ou não estar em relação com as unidades físicas distinguíveis. Por exemplo, esses módulos ou alguns deles podem ser reunidos em um único componente ou circuito ou contribuir com as funcionalidades de um software. A contrario, alguns módulos podem ser potencialmente compostos de entidades físicas separadas. Os aparelhos que são compatíveis com os presentes princípios são implementados com o uso de hardware puro, por exemplo com o uso de hardware dedicado, tal como ASIC ou FPGA ou VLSI, respectivamente « Circuito Integrado de Aplicação Específica », « Arranjo de Portas Programáveis em Campo », « Integração em Muito Larga Escala », ou a partir de vários componentes eletrônicos integrados incorporados em um dispositivo ou a partir de uma mistura de componentes de hardware e software.
[0166] A Figura 9 representa uma arquitetura exemplificativa de um dispositivo 90 que pode ser configurado para implementar um método descrito em relação às Figuras 1 a 8.
[0167] O dispositivo 90 compreende os seguintes elementos que são vinculados entre si por um barramento de dados e endereço 91:
[0168] - um microprocessador 92 (ou CPU), que é, por exemplo, um DSP (ou Processador de Sinal Digital);
[0169] - uma ROM (ou Memória Somente de Leitura) 93;
[0170] - uma RAM (ou Memória de Acesso Aleatório) 94;
[0171] - uma interface I/O 95 para recepção de dados para transmissão, a partir de um aplicativo; e
[0172] - uma bateria 96.
[0173] De acordo com um exemplo, a bateria 96 é externa ao dispositivo. Em cada uma das memórias mencionadas, a palavra « registro » usada no relatório descritivo pode corresponder à área de pequena capacidade (alguns bits) ou à área muito grande (por exemplo, um programa inteiro ou grande quantidade de dados recebidos ou decodificados). A ROM 93 compreende pelo menos um programa e parâmetros. A ROM 93 pode armazenar algoritmos e instruções para realizar técnicas, de acordo com os presentes princípios. Quando ligada, a CPU 92 transfere por upload o programa na RAM e executa as instruções correspondentes.
[0174] A RAM 94 compreende, em um registro, o programa executado pela CPU 92 e transferido por upload após a ligação do dispositivo 90, dados de entrada em um registro, dados intermediários em diferentes estados do método em um registro, e outras variáveis usadas para execução do método em um registro.
[0175] As implementações descritas no presente documento podem ser implementadas, por exemplo, em um método ou um processo, um aparelho, um programa de software, um fluxo de dados ou um sinal. Mesmo se apenas discutida no contexto de uma única forma de implementação (por exemplo, discutida apenas como um método ou um dispositivo), a implementação de recursos discutidos também pode ser implementada de outras formas (por exemplo, um programa). Uma aparelho pode ser implementado, por exemplo, em um hardware, software e firmware adequados.
Os métodos podem ser implementados, por exemplo, em um aparelho, tal como, por exemplo, um processador, que se refere a dispositivos de processamento, em geral, que incluem, por exemplo, um computador, um microprocessador, um circuito integrado ou um dispositivo lógico programável. Os processadores também incluem dispositivos de comunicação, tais como, por exemplo, computadores, telefones celulares, assistentes digitais portáteis/pessoais ("PDAs"), e outros dispositivos que facilitem a comunicação de informações entre usuários finais.
[0176] De acordo com um exemplo de codificação ou um codificador, a nuvem de pontos PC é obtida a partir de uma fonte. Por exemplo, a fonte pertence a um conjunto que compreende:
[0177] - uma memória local (93 ou 94), por exemplo, uma memória de vídeo ou uma RAM (ou Memória de Acesso Aleatório), uma memória flash, uma ROM (ou Memória Somente de Leitura), um disco rígido;
[0178] - uma interface de armazenamento (95), por exemplo, uma interface com um armazenamento em massa, uma RAM, uma memória flash, uma ROM, um disco óptico ou um disco magnético;
[0179] - uma interface de comunicação (95), por exemplo, uma interface com fio (por exemplo, uma interface de barramento, uma interface de rede de longa distância, uma interface de rede local) ou uma interface sem fio (tal como uma interface IEEE 802.11 ou uma interface Bluetooth®); e
[0180] - um circuito de captura de imagem (por exemplo, um sensor, tal como, por exemplo, um CCD (ou Dispositivo de Carga Acoplada) ou CMOS (ou Semicondutor de Óxido Metálico Complementar)).
[0181] De acordo com um exemplo da decodificação ou de um decodificador, a primeira e/ou segunda imagens de profundidade decodificadas ou a nuvem de pontos reconstruída é (são) enviada para um destino; especificamente, o destino pertence a um conjunto que compreende:
[0182] - uma memória local (93 ou 94), por exemplo, uma memória de vídeo ou uma RAM, uma memória flash, um disco rígido;
[0183] - uma interface de armazenamento (95), por exemplo, uma interface com um armazenamento em massa, uma RAM, uma memória flash, uma ROM, um disco óptico ou um disco magnético;
[0184] - uma interface de comunicação (95), por exemplo, uma interface com fio (por exemplo, uma interface de barramento, (por exemplo USB (ou Barramento Serial Universal)), uma interface de rede de longa distância, uma interface de rede local, uma interface HDMI (Interface Multimídia de Alta Definição)) ou uma interface sem fio (tal como, uma interface IEEE 802.11, WiFi ® ou uma interface Bluetooth ®); e
[0185] - um visor.
[0186] De acordo com os exemplos de codificação ou codificador, o fluxo de bits B é enviado para um destino. Como um exemplo, o fluxo de bits B é armazenado em uma memória local ou remota, por exemplo, uma memória de vídeo (94) ou uma RAM (94), um disco rígido (93). Em uma variante, um ou ambos os fluxos de bits são enviados para uma interface de armazenamento (95), por exemplo, uma interface com um armazenamento em massa, uma memória flash, ROM, um disco óptico ou um suporte magnético e/ou transmitido através de uma interface de comunicação (95), por exemplo, uma interface com um enlace ponto a ponto, um barramento de comunicação, um enlace de ponto a múltiplos pontos ou uma rede de difusão.
[0187] De acordo com os exemplos de decodificação ou decodificador, o fluxo de bits B é obtido a partir de uma fonte. De modo exemplificativo, o fluxo de bits é lido a partir de uma memória local, por exemplo, uma memória de vídeo (94), uma RAM (94), uma ROM (93), uma memória flash (93) ou um disco rígido (93). Em uma variante, o fluxo de bits é recebido a partir de uma interface de armazenamento (95), por exemplo, uma interface com um armazenamento em massa, uma RAM, uma ROM, uma memória flash, um disco óptico ou um suporte magnético e/ou recebido através de uma interface de comunicação (95), por exemplo, uma interface com um enlace ponto a ponto, um barramento, um enlace de ponto a múltiplos pontos ou uma rede de difusão.
[0188] De acordo com os exemplos, o dispositivo 90 que é configurado para implementar um método de codificação descrito em relação às Figuras 1 a 3 ou 5 e 6, pertence a um conjunto que compreende:
[0189] - um dispositivo móvel;
[0190] - um dispositivo comunicação;
[0191] - um dispositivo de jogos;
[0192] - um tablet (ou computador do tipo tablet);
[0193] - um laptop ;
[0194] - uma câmera de imagem estática;
[0195] - uma câmera de vídeo;
[0196] - um chip de codificação;
[0197] - um servidor de imagem estática; e
[0198] - um servidor de vídeo (por exemplo, um servidor de difusão, um servidor de vídeo sob demanda ou servidor da web).
[0199] De acordo com os exemplos, o dispositivo 90 que é configurado para implementar um método de decodificação descrito em relação às Figuras 4 ou 7 e 8, pertence a um conjunto que compreende:
[0200] - um dispositivo móvel;
[0201] - um dispositivo comunicação;
[0202] - um dispositivo de jogos;
[0203] - um decodificador de sinais;
[0204] - um aparelho de TV;
[0205] - um tablet (ou computador do tipo tablet);
[0206] - um laptop;
[0207] - um visor; e
[0208] - um chip de decodificação.
[0209] De acordo com um exemplo dos presentes princípios, ilustrado na Figura 10, em um contexto de transmissão entre dois dispositivos remotos A e B através de uma rede de comunicação REDE, o dispositivo A compreende um processador em relação à memória RAM e ROM que são configuradas para implementar um método para codificar a geometria de uma nuvem de pontos, conforme descrito em relação às Figura 1 a 3 ou 5 e 6 e o dispositivo B compreende um processador em relação à memória RAM e ROM que são configuradas para implementar um método para decodificar uma nuvem de pontos, conforme descrito em relação às Figuras 4 ou 7 e 8.
[0210] De acordo com um exemplo, a rede é uma rede de difusão, adaptada para difundir imagens fixas ou imagens de vídeo a partir de um dispositivo A para dispositivos de decodificação que incluem o dispositivo B.
[0211] Um sinal, destinado a ser transmitido pelo dispositivo A, porta o fluxo de bits B. O fluxo de bits B compreende uma primeira imagem de profundidade codificada e, possivelmente pelo menos uma parte de uma segunda imagem de profundidade codificada, conforme explicado em relação à Figura 1. Esse sinal compreende adicionalmente dados de informações que representam pelo menos um modo de codificação de profundidade DCMi. Cada modo de codificação de profundidade indica se os valores de profundidade de pixels em uma região de imagem i da segunda imagem de profundidade são codificados no fluxo de bits B (modo “explícito”) ou não (modo “implícito”).
[0212] A Figura 11 mostra um exemplo da sintaxe de tal sinal quando os dados são transmitidos através de um protocolo de transmissão baseado em pacote.
Cada pacote transmitido P compreende um cabeçalho H e uma carga útil CARGA ÚTIL. Um bit do cabeçalho H, por exemplo, é dedicado a representar um modo de codificação de profundidade DCMi. Desse modo, pelo menos um bit do cabeçalho H é dedicado a representar pelo menos um modo de codificação de profundidade DCMi.
[0213] As implementações dos vários processos e recursos descritos no presente documento podem ser incorporadas em uma variedade de equipamentos ou aplicativos diferentes. Os exemplos de tais equipamentos incluem um codificador, um decodificador, um pós-processador que processa saída a partir de um decodificador, uma pré-processador que fornece entrada para um codificador, um codificador de vídeo, decodificador de vídeo, um codec de vídeo, um servidor da web, um decodificador de sinais, um computador do tipo laptop, um computador pessoal, um telefone celular,um PDA, qualquer outro dispositivo para processar uma imagem ou um vídeo ou outros dispositivos de comunicação. Como deve ser claro, o equipamento pode ser móvel e ainda instalado em um veículo móvel.
[0214] Adicionalmente, os métodos podem ser implementados por instruções que são realizadas por um processador, e tais instruções (e/ou valores de dados produzidos por uma implementação) podem ser armazenadas em um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode assumir a forma de um produto de programa legível por computador incorporado em um ou mais meios legíveis por computador e que tem o código de programa legível por computador incorporado no mesmo, que é executável por um computador. Um meio de armazenamento legível por computador, conforme usado no presente documento, é considerado um meio de armazenamento não transitório dada a capacidade inerente de armazenar as informações no mesmo, assim como a capacidade inerente de fornecer recuperação das informações a partir do mesmo. Um meio de armazenamento legível por computador pode ser, por exemplo, porém sem limitação, um sistema, aparelho ou dispositivo eletrônico, magnético, óptico, eletromagnético, infravermelho ou semicondutor, ou qualquer combinação adequada do que foi anteriormente mencionado. Deve-se observar o seguinte, embora forneça exemplos mais específicos de meios de armazenamento legíveis por computador aos quais os presentes princípios podem ser aplicados, essa é uma listagem meramente ilustrativa e não exaustiva, conforme prontamente observado por uma pessoa de habilidade comum na técnica: um computador, portátil; disquete; um disco rígido; uma memória somente de leitura (ROM); um memória somente de leitura programável apagável (EPROM ou memória Flash): uma memória somente de leitura de disco compacto portátil (CD-ROM); um dispositivo de armazenamento óptico: um dispositivo de armazenamento magnético; ou qualquer combinação do anteriormente mencionado.
[0215] As instruções podem formar um programa de aplicativo incorporado de maneira tangível em um meio legível por processador.
[0216] As instruções podem se encontrar, por exemplo, em hardware,
firmware, software ou uma combinação dos mesmos. As instruções podem ser encontradas, por exemplo, em um sistema operacional, um aplicativo separado ou em uma combinação dos dois. Um processador pode ser caracterizado, portanto, como, por exemplo, tanto um dispositivo configurado para realizar um processo como um dispositivo que inclui um meio legível por processador (tal como um dispositivo de armazenamento) que tem instruções para realizar um processo. Ademais, um meio legível por processador pode armazenar, além de ou em vez de instruções, valores de dados produzidos por uma implementação.
[0217] Conforme será evidente para uma pessoa versada na técnica, as implementações podem produzir uma variedade de sinais formatados para portar informações que podem ser, por exemplo, armazenadas ou transmitidas. As informações podem incluir, por exemplo, instruções para realizar um método, ou dados produzidos por uma das implementações descritas. Por exemplo, um sinal pode ser formatado para portar como dados as regras para escrever ou ler a sintaxe de um exemplo descrito dos presentes princípios, ou para portar como dados os valores de sintaxe reais escritos por um exemplo descrito dos presentes princípios. Tal sinal pode ser formatado, por exemplo, como uma onda eletromagnética (por exemplo, com o uso de uma porção de espectro de radiofrequência) ou como um sinal de banda base.
a formatação pode incluir, por exemplo, codificar um fluxo de dados e modular uma portadora com o fluxo de dados codificado. As informações que o sinal porta podem ser, por exemplo, informações analógicas ou digitais. O sinal pode ser transmitido através de uma variedade de enlaces com fio ou sem fio diferentes, conforme é conhecido. O sinal pode ser armazenado em um meio legível por processador.
[0218] Várias implementações foram descritas. Todavia, deve-se compreender que várias modificações podem ser efetuadas. Por exemplo, elementos de diferentes implementações podem ser combinados, suplementados, modificados ou removidos para produzir outras implementações. Adicionalmente, uma pessoa de conhecimento comum na técnica irá compreender que outras estruturas e processos podem ser substituídos por aqueles revelados e as implementações resultantes irão realizar pelo menos substancialmente a mesma função (ou funções), pelo menos substancialmente do mesmo modo (ou modos), para alcançar pelo menos substancialmente o mesmo resultado (ou resultados) que as implementações reveladas.
Consequentemente, essas e outras implementações são contempladas por este pedido.

Claims (16)

REIVINDICAÇÕES
1. Método que compreende codificar valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos sobre um plano de projeção, CARACTERIZADO pelo fato de codificar os valores de profundidade compreende: - obter uma primeira imagem de profundidade codificada codificando-se uma primeira imagem de profundidade em um fluxo de bits, sendo que a dita primeira imagem de profundidade compreende pelo menos valores de profundidade de pontos mais próximos da nuvem de pontos; - determinar e codificar, no fluxo de bits, um modo de codificação de profundidade por região de imagem, sendo que o dito modo de codificação de profundidade indica se os valores de profundidade em uma região de imagem de uma segunda imagem de profundidade também são codificados no fluxo de bits, sendo que a dita segunda imagem de profundidade representa valores de profundidade de pontos mais distantes da nuvem de pontos; e - se pelo menos um modo de codificação de profundidade indica que os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits, codificar os ditos valores de profundidade no fluxo de bits.
2. Dispositivo para codificar os valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos sobre um plano de projeção CARACTERIZADO pelo fato de que compreende pelo menos um processador configurado para: - obter uma primeira imagem de profundidade codificada codificando-se uma primeira imagem de profundidade em um fluxo de bits, sendo que a dita primeira imagem de profundidade compreende pelo menos valores de profundidade de pontos mais próximos da nuvem de pontos; - determinar e codificar, no fluxo de bits, um modo de codificação de profundidade por região de imagem, sendo que o dito modo de codificação de profundidade indica se os valores de profundidade em uma região de imagem de uma segunda imagem de profundidade também são codificados no fluxo de bits, sendo que a dita segunda imagem de profundidade representa valores de profundidade de pontos mais distantes da nuvem de pontos; e - se pelo menos um modo de codificação de profundidade indica que os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits, codificar os ditos valores de profundidade no fluxo de bits.
3. Método, de acordo com a reivindicação 1, ou dispositivo, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que a determinação se os valores em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits compreende: - obter uma primeira imagem de profundidade decodificada decodificando-se a primeira imagem de profundidade codificada e uma segunda imagem de profundidade decodificada codificando-se e decodificando-se a segunda imagem de profundidade; - calcular um primeiro custo de distorção de taxa levando-se em consideração uma primeira distância e uma primeira taxa de bits, sendo que a primeira distância é calculada entre os valores de profundidade em uma região de imagem colocalizada da dita primeira imagem de profundidade decodificada e os valores de profundidade em uma região de imagem colocalizada da segunda imagem de profundidade decodificada, sendo que a dita taxa de dados é calculada para codificar a dita segunda imagem de profundidade; - calcular um segundo custo de distorção de taxa levando-se em consideração uma segunda distância, sendo que a taxa de dados é considerada aqui como sendo nula, sendo que a dita segunda distância é calculada entre os valores de profundidade da região de imagem colocalizada da dita primeira imagem de profundidade decodificada e os valores de profundidade interpolados obtidos interpolando-se os valores de profundidade na dita primeira imagem de profundidade decodificada; - se o segundo custo de distorção de taxa for menor que o primeiro custo de distorção de taxa, então o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na região de imagem colocalizada da segunda imagem de profundidade não são codificados no fluxo de bits, de outro modo, o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na região de imagem colocalizada da segunda imagem de profundidade são codificados no fluxo de bits.
4. Método, de acordo com a reivindicação 1, ou dispositivo, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que a determinação se os valores em uma região de imagem da segunda imagem de profundidade são codificados no fluxo de bits compreende: - calcular os valores de profundidade interpolados para a dita região de imagem da segunda imagem de profundidade interpolando-se os valores de profundidade na dita primeira imagem de profundidade; - calcular uma distância entre os valores de profundidade na dita região de imagem da segunda imagem de profundidade e os valores de profundidade interpolados obtidos interpolando-se os valores de profundidade em uma primeira imagem de profundidade decodificada obtida decodificando-se a primeira imagem de profundidade codificada; - se a distância for menor que um limiar, então o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade não são codificados no fluxo de bits, de outro modo, o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade são codificados no fluxo de bits.
5. Método ou dispositivo, de acordo com a reivindicação 3 ou 4, CARACTERIZADO pelo fato de que a primeira e a segunda distâncias, de acordo com a reivindicação 3 ou a distância, de acordo com a reivindicação 4, são computadas entre pelo menos uma parte de uma nuvem de pontos reconstruída e a parte correspondente da nuvem de pontos, sendo que a dita pelo menos parte da nuvem de pontos é reconstruída a partir da primeira imagem de profundidade decodificada e de uma segunda imagem de profundidade.
6. Método ou dispositivo, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a dita pelo menos parte da nuvem de pontos é reconstruída a partir de valores de profundidade na dita região de imagem e a partir de valores de profundidade em pelo menos uma região de imagem anteriormente considerada.
7. Método, de acordo com uma das reivindicações 1 ou 3 a 6, ou dispositivo, de acordo com uma das reivindicações 2 a 6, CARACTERIZADO pelo fato de que se o modo de codificação de profundidade para a dita região de imagem indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade não são codificados no fluxo de bits, os valores de profundidade na dita região de imagem da segunda imagem de profundidade são substituídos por um valor constante antes de codificar, pelo menos parcialmente, a segunda imagem de profundidade.
8. Método, de acordo com uma das reivindicações 1 ou 3 a 7 ou dispositivo, de acordo com uma das reivindicações 2 a 7, CARACTERIZADO pelo fato de que o modo de codificação de profundidade é codificado como metadados associados à reconstrução da nuvem de pontos cuja geometria é representada pela dita primeira e segunda imagens de profundidade.
9. Método que compreende decodificar valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos original sobre um plano de projeção, CARACTERIZADO pelo fato de que decodificar os valores de profundidade compreende: - obter uma primeira imagem de profundidade decodificada decodificando-se um fluxo de bits; - obter um modo de codificação de profundidade associado a uma região de imagem de uma segunda imagem de profundidade a partir do fluxo de bits; - se o modo de codificação de profundidade indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade são codificados no fluxo de bits, decodificar os ditos valores de profundidade a partir do fluxo de bits, - de outro modo, calcular os ditos valores de profundidade interpolados na dita região de imagem da segunda imagem de profundidade interpolando-se os valores de profundidade a partir da primeira imagem de profundidade decodificada.
10. Dispositivo para decodificar valores de profundidade de pontos ortogonalmente projetados de uma nuvem de pontos original sobre um plano de projeção CARACTERIZADO pelo fato de que compreende pelo menos um processador configurado para: - obter uma primeira imagem de profundidade decodificada decodificando-se um fluxo de bits; - obter um modo de codificação de profundidade associado a uma região de imagem de uma segunda imagem de profundidade a partir do fluxo de bits; - se o modo de codificação de profundidade indica que os valores de profundidade na dita região de imagem da segunda imagem de profundidade são codificados no fluxo de bits, decodificar os ditos valores de profundidade a partir do fluxo de bits, - de outro modo, calcular os valores de profundidade interpolados na dita região de imagem da segunda imagem de profundidade interpolando-se os ditos valores de profundidade a partir da primeira imagem de profundidade decodificada.
11. Método, de acordo com uma das reivindicações 1 ou 3 a 9 ou dispositivo, de acordo com uma das reivindicações 2 a 8 ou 10, CARACTERIZADO pelo fato de que toda a segunda imagem de profundidade é codificada/decodificada no/a partir do fluxo de bits quando pelo menos um modo de codificação de profundidade indica que os valores de profundidade em uma região de imagem da segunda imagem de profundidade são codificados/decodificados no fluxo de bits.
12. Método, de acordo com uma das reivindicações 1 ou 3 a 9 ou 11 ou dispositivo, de acordo com uma das reivindicações 2 a 8 ou 10 a 11, CARACTERIZADO pelo fato de que o tamanho e o formato de uma região de imagem da segunda imagem de profundidade são o tamanho e o formato da dita segunda imagem de profundidade.
13. Método, de acordo com uma das reivindicações 1 ou 3 a 9 ou 11 a 12 ou dispositivo, de acordo com uma das reivindicações 2 a 8 ou 10 a 12, CARACTERIZADO pelo fato de que a dita região de imagem da segunda imagem de profundidade é um bloco da dita segunda imagem de profundidade ou um patch de profundidade projetado da dita segunda imagem de profundidade.
14. Produto de programa de computador CARACTERIZADO pelo fato de que compreende instruções de código de programa para executar as etapas do método, de acordo com uma das reivindicações 1 ou 3 a 9 ou 11 a 13, quando esse programa é executado em um computador.
15. Sinal de vídeo CARACTERIZADO pelo fato de que compreende dados codificados que representam uma primeira imagem de profundidade, e dados codificados que representam pelo menos um modo de codificação de profundidade que indica se os valores de profundidade de pixels em uma região de imagem de uma segunda imagem de profundidade são codificados no fluxo de bits.
16. Meio legível por computador não transitório CARACTERIZADO pelo fato de que inclui instruções para fazer com que um ou mais processadores realizem as etapas do método, de acordo com uma das reivindicações 1 ou 3 a 9 ou 11 a 13.
BR112020020003-4A 2018-04-11 2019-04-01 método e dispositivo para codificar a geometria de uma nuvem de pontos BR112020020003A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP18305438.6 2018-04-11
EP18305438.6A EP3554082A1 (en) 2018-04-11 2018-04-11 A method and device for coding the geometry of a point cloud
PCT/US2019/025142 WO2019199512A1 (en) 2018-04-11 2019-04-01 A method and device for coding the geometry of a point cloud

Publications (1)

Publication Number Publication Date
BR112020020003A2 true BR112020020003A2 (pt) 2021-01-26

Family

ID=62046815

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020020003-4A BR112020020003A2 (pt) 2018-04-11 2019-04-01 método e dispositivo para codificar a geometria de uma nuvem de pontos

Country Status (8)

Country Link
US (3) US11477481B2 (pt)
EP (2) EP3554082A1 (pt)
JP (1) JP7488189B2 (pt)
KR (1) KR20200141448A (pt)
CN (1) CN111971969A (pt)
BR (1) BR112020020003A2 (pt)
RU (1) RU2769719C1 (pt)
WO (1) WO2019199512A1 (pt)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3106158A1 (en) 2018-07-11 2020-01-16 Interdigital Vc Holdings, Inc. Method for encoding/decoding texture of points of a point cloud
US11625809B2 (en) 2018-07-11 2023-04-11 Interdigital Vc Holdings, Inc. Method and device for encoding/decoding the geometry of a point cloud
JPWO2020230710A1 (pt) * 2019-05-10 2020-11-19
CN114930860A (zh) * 2020-01-07 2022-08-19 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN111340899B (zh) * 2020-02-14 2022-09-06 福州大学 一种彩色点云的压缩采样及重构方法
CN116724556A (zh) * 2021-01-06 2023-09-08 Lg电子株式会社 点云数据发送装置和方法、点云数据接收装置和方法
WO2023282581A1 (ko) * 2021-07-05 2023-01-12 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2023059168A1 (ko) * 2021-10-08 2023-04-13 엘지전자 주식회사 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1218282C (zh) * 2001-11-27 2005-09-07 三星电子株式会社 用深度图像表示三维物体的节点结构
WO2007116551A1 (ja) 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US8446958B2 (en) * 2009-09-22 2013-05-21 Panasonic Corporation Image coding apparatus, image decoding apparatus, image coding method, and image decoding method
KR101522850B1 (ko) * 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
US9918068B2 (en) * 2011-06-15 2018-03-13 Media Tek Inc. Method and apparatus of texture image compress in 3D video coding
US9191646B2 (en) * 2011-08-29 2015-11-17 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
JPWO2013031575A1 (ja) * 2011-08-31 2015-03-23 ソニー株式会社 画像処理装置および画像処理方法
KR20130047822A (ko) * 2011-11-01 2013-05-09 삼성전자주식회사 영상 처리 장치 및 방법
WO2013159330A1 (en) * 2012-04-27 2013-10-31 Nokia Corporation An apparatus, a method and a computer program for video coding and decoding
JP2015523030A (ja) * 2012-07-13 2015-08-06 華為技術有限公司Huawei Technologies Co.,Ltd. 3次元ビデオを表すビットストリームを符号化する装置
EP2898697A4 (en) * 2012-09-24 2016-10-19 Qualcomm Inc CODING DEPTH CARD
KR20140048783A (ko) * 2012-10-09 2014-04-24 한국전자통신연구원 깊이정보값을 공유하여 움직임 정보를 유도하는 방법 및 장치
US9344619B2 (en) * 2013-08-30 2016-05-17 Qualcomm Incorporated Method and apparatus for generating an all-in-focus image
US11297346B2 (en) * 2016-05-28 2022-04-05 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
CN106097334B (zh) 2016-06-08 2023-09-12 北京航空航天大学 基于深度学习的点云配准方法
CN106846382A (zh) 2017-01-22 2017-06-13 深圳市唯特视科技有限公司 一种基于直方图控制点的图像配准目标检测方法
CN107481313A (zh) 2017-08-18 2017-12-15 深圳市唯特视科技有限公司 一种基于学习有效点云生成的密集三维物体重建方法
US10909725B2 (en) * 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
TWI815842B (zh) * 2018-01-16 2023-09-21 日商索尼股份有限公司 影像處理裝置及方法

Also Published As

Publication number Publication date
US11838547B2 (en) 2023-12-05
JP2021518689A (ja) 2021-08-02
US20240073453A1 (en) 2024-02-29
WO2019199512A1 (en) 2019-10-17
US11477481B2 (en) 2022-10-18
US20230026080A1 (en) 2023-01-26
EP3777181A1 (en) 2021-02-17
CN111971969A (zh) 2020-11-20
JP7488189B2 (ja) 2024-05-21
KR20200141448A (ko) 2020-12-18
US20210152849A1 (en) 2021-05-20
RU2769719C1 (ru) 2022-04-05
EP3554082A1 (en) 2019-10-16

Similar Documents

Publication Publication Date Title
BR112020020003A2 (pt) método e dispositivo para codificar a geometria de uma nuvem de pontos
KR20200024219A (ko) 3d 객체의 기하구조 및 컬러들을 표현하는 컬러화된 포인트 클라우드를 인코딩/디코딩하기 위한 방법 및 장치
US20210183109A1 (en) Method and apparatus for encoding/decoding a point cloud representing a 3d object
US20240005560A1 (en) A method for encoding depth values of a set of 3d points once orthogonally projected into at least one image region of a projection plane
EP3692503A1 (en) A method and apparatus for encoding/decoding the geometry of a point cloud representing a 3d object
JP7389751B2 (ja) 三次元物体を表すポイントクラウドを符号化/復号する方法及び装置
US20210166435A1 (en) Method and apparatus for encoding/decoding the geometry of a point cloud representing a 3d object
WO2019070830A1 (en) METHOD AND APPARATUS FOR ENCODING / DECODING THE COLORS OF A POINT CLOUD REPRESENTING A 3D OBJECT
US11798195B2 (en) Method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream
WO2019199513A1 (en) A method and apparatus for encoding and decoding metadata associated with patched projection of point clouds
CN114270863A (zh) 一种编码和解码立体视频的方法和装置
BR112021005167A2 (pt) método e dispositivo para codificar/reconstruir pontos 3d
JP2022549431A (ja) 容積ビデオを符号化、送信、及び復号化するための方法及び装置
US20230224501A1 (en) Different atlas packings for volumetric video
US20240177355A1 (en) Sub-mesh zippering
US20230306644A1 (en) Mesh patch syntax
CN117897732A (zh) 网格面元句法

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]