BR112020014519A2 - Método e aparelho para codificar e decodificar cenas tridimensionais em e a partir de um fluxo de dados - Google Patents
Método e aparelho para codificar e decodificar cenas tridimensionais em e a partir de um fluxo de dados Download PDFInfo
- Publication number
- BR112020014519A2 BR112020014519A2 BR112020014519-0A BR112020014519A BR112020014519A2 BR 112020014519 A2 BR112020014519 A2 BR 112020014519A2 BR 112020014519 A BR112020014519 A BR 112020014519A BR 112020014519 A2 BR112020014519 A2 BR 112020014519A2
- Authority
- BR
- Brazil
- Prior art keywords
- photo
- color
- depth
- image
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000003068 static effect Effects 0.000 claims description 39
- 230000015654 memory Effects 0.000 claims description 33
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000002123 temporal effect Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 15
- 238000013507 mapping Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 229920001690 polydopamine Polymers 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 208000002173 dizziness Diseases 0.000 description 2
- 238000012858 packaging process Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000007654 immersion Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/756—Media network packet handling adapting media to device capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/172—Processing image signals image signals comprising non-image signal components, e.g. headers or format information
- H04N13/178—Metadata, e.g. disparity information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
- H04N19/54—Motion estimation other than block-based using feature points or meshes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
- G06T2207/10021—Stereoscopic video; Stereoscopic image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
métodos e dispositivos são fornecidos para codificar e decodificar um fluxo de dados portando dados representativos de uma cena tridimensional, o fluxo de dados compreendendo fotos em cores empacotadas em uma imagem em cores; fotos em profundidade empacotadas em uma imagem em profundidade; e um conjunto de itens de dados de patch compreendendo dados de desprojeção; dados para recuperar uma foto em cores na imagem em cores e dados de geometria. esses dados são inseridos na faixa de vídeo do fluxo com informações temporais associadas. as fotos em cores e profundidade que são repetidas pelo menos duas vezes em uma sequência de patches não são empacotadas nas imagens, mas inseridas na faixa de imagem do fluxo e são apontadas pelos dados em cores ou de geometria.
Description
1.Campo Técnico
[001] Os presentes princípios geralmente se referem à codificação e decodificação de uma cena tridimensional (3D) ou uma sequência de cenas tridimensionais em e a partir de um fluxo de dados. Particularmente, mas não exclusivamente, o campo técnico dos presentes princípios está relacionado à codificação / decodificação de imagens em cores para as texturas e imagens em profundidade ou parâmetros analíticos para a geometria das cenas.
2. Antecedentes
[002] A presente seção pretende apresentar ao leitor vários aspectos da técnica, os quais podem estar relacionados a vários aspectos dos presentes princípios descritos e/ou reivindicados abaixo. Acredita-se que esta discussão seja útil para fornecer ao leitor informações básicas para facilitar uma melhor compreensão dos vários aspectos dos presentes princípios. Por conseguinte, deve ser entendido que essas declarações devem ser lidas sob essa luz, e não como admissões da técnica anterior.
[003] Vídeo imersivo, também chamado de vídeo plano de 360º, permite que o usuário assista ao redor de si mesmo através de rotações da cabeça em torno de um ponto de vista estático. As rotações permitem apenas uma experiência de 3 Graus de Liberdade (3DoF). Mesmo que o vídeo 3DoF seja suficiente para uma primeira experiência de vídeo omnidirecional, por exemplo, usando um dispositivo de Visor Montado na Cabeça (HMD), o vídeo 3DoF pode se tornar rapidamente frustrante para o espectador que esperaria mais liberdade, por exemplo, enfrentando paralaxe. Além disso, 3DoF também pode causar tonturas, pois o usuário nunca apenas gira a cabeça, mas também a translada em três direções, translações que não são reproduzidas nas experiências de vídeo em 3DoF.
[004] Vídeo volumétrico (também conhecido como vídeo 6 Graus de Liberdade (6DoF)) é uma alternativa ao vídeo 3DoF. Ao assistir a um vídeo 6DoF, além das rotações, o usuário também pode transladar sua cabeça e até seu corpo no conteúdo assistido e experimentar paralaxe e até volumes. Esses vídeos aumentam consideravelmente a sensação de imersão e a percepção da profundidade da cena e também evitam tonturas, fornecendo um retorno visual consistente durante as translações da cabeça. O conteúdo é criado por meio de sensores dedicados, permitindo a gravação simultânea em cores e profundidade da cena de interesse. O uso de equipamento de câmeras coloridas combinado com técnicas de fotogrametria é uma maneira comum de realizar essa gravação.
[005] Um vídeo volumétrico é uma sequência de cenas em 3D. Uma solução para codificar vídeos volumétricos é projetar cada cena 3D da sequência de cena 3D em mapas de projeção agrupados em fotos em cores e fotos em profundidade, chamadas patches. Os patches são agrupados em imagens em cores e em profundidade que são armazenadas na faixa de vídeo de um fluxo de vídeo. Essa codificação tem a vantagem de fazer uso de padrões de processamento de imagem e vídeo padrão. Na decodificação, os pixels das fotos em cores são projetados a uma profundidade determinada pelas informações armazenadas na foto em profundidade associada. Tais soluções são eficazes. No entanto, codificar essa enorme quantidade de dados como imagens na faixa de vídeo de um fluxo de vídeo gera problemas. O tamanho do fluxo de bits induz problemas técnicos de taxa de bits em relação ao espaço de armazenamento, transmissão pela rede e desempenho de decodificação.
3. Sumário
[006] A seguir, é apresentado um resumo simplificado dos presentes princípios para fornecer uma compreensão básica de alguns aspectos dos presentes princípios. Este resumo não é uma visão geral abrangente dos presentes princípios.
Ele não se destina a identificar elementos chaves ou críticos dos presentes princípios. O resumo a seguir apresenta apenas alguns aspectos dos presentes princípios de forma simplificada, como prelúdio da descrição mais detalhada fornecida abaixo.
[007] Os presentes princípios referem-se a um método de codificação de uma nuvem de pontos em um fluxo. A presente divulgação refere-se a um método para codificar uma cena tridimensional em um fluxo de dados que compreende uma faixa de vídeo e uma faixa de imagem. O método compreende: - obter um conjunto de patches, um patch pertencente a uma sequência de patches, um patch compreendendo dados de desprojeção, uma foto em cores e uma foto em profundidade; - para uma sequência de patches, determinar para cada foto em cores e foto em profundidade se a foto for uma foto estática ou não estática, uma foto sendo estática se a foto for repetida pelo menos duas vezes na sequência; - para um conjunto de patches: - gerar uma imagem em cores empacotando fotos em cores não estáticas do conjunto de patches; uma imagem em profundidade empacotando fotos em profundidade não estáticas do conjunto de patches; e um conjunto de itens de dados de patch, um item de dados de patch compreendendo, para um patch, os dados de desprojeção e *se a foto em cores for não estática, um local da foto em cores na imagem em cores; senão um ponteiro para uma foto estática na faixa de imagem do fluxo; e “se a foto em profundidade for não estática, um local da foto em profundidade na imagem em profundidade; senão um ponteiro para uma foto estática na faixa de imagem do fluxo; - codificar a referida imagem em cores, imagem em profundidade e conjunto de itens de dados de patch em uma posição na faixa de vídeo do fluxo;
- codificar fotos em cores estáticas e em profundidade na faixa de imagem do fluxo em uma posição anterior à posição de um primeiro ponteiro para a referida foto em cor ou em profundidade estática codificada na faixa de vídeo do fluxo.
[008] A presente divulgação também se refere a um dispositivo adaptado para codificar uma cena tridimensional em um fluxo. O dispositivo compreende uma memória associada a um processador configurado para executar o presente método de codificação de uma cena tridimensional em um fluxo.
[009] A presente divulgação também se refere a um método de decodificação de uma cena tridimensional de um fluxo de dados que compreende uma faixa de vídeo e uma faixa de imagem. O método compreende: - obter uma foto em uma primeira posição na faixa de imagem do referido fluxo de dados, pixels da referida foto compreendendo componente em profundidade e/ou em cor; - obter em uma segunda posição na faixa de vídeo do referido fluxo de dados: *uma imagem em cores compreendendo fotos em cores empacotadas na referida imagem em cores; *uma imagem em profundidade compreendendo fotos em profundidade empacotadas na referida imagem em profundidade; e *um conjunto de itens de dados de patch, um item de dados de patch que compreende: - dados de desprojeção; - dados em cores compreendendo um local de uma foto em cores na imagem em cores ou um ponteiro para a referida primeira foto; e - dados de geometria, uma localização de uma foto em profundidade na imagem em profundidade ou um ponteiro para a referida primeira foto; em que a referida primeira posição é anterior à referida segunda posição no fluxo; e - para um item de dados de patch do referido conjunto, usando dados de desprojeção para desprojetar pixels da foto em cores descrita no referido patch a uma profundidade determinada de acordo com pixels da foto em profundidade descrita no referido patch.
[010] A presente divulgação também se refere a um dispositivo adaptado para decodificar uma cena tridimensional de um fluxo de dados. O dispositivo compreende uma memória associada a um processador configurado para executar o presente método de decodificação de uma cena tridimensional de um fluxo de dados.
[011] A presente divulgação também se refere a um fluxo de dados portando dados representativos de uma cena tridimensional. O fluxo de dados compreende: - uma faixa de imagem compreendendo pelo menos uma foto em uma primeira posição no referido fluxo de dados, pixels da referida foto compreendendo profundidade e/ou componente; - uma faixa de vídeo compreendendo pelo menos um tripleto de dados em uma segunda posição no fluxo de dados, o tripleto de dados compreendendo: *uma imagem em cores compreendendo fotos em cores empacotadas na referida imagem em cores; *uma imagem em profundidade compreendendo fotos em profundidade empacotadas na referida imagem em profundidade; e *um conjunto de itens de dados de patch, um item de dados de patch que compreende: - dados de desprojeção; - dados em cores compreendendo um local de uma foto em cores na imagem em cores ou um ponteiro para a referida primeira foto; e - dados de geometria, uma localização de uma foto em profundidade na imagem em profundidade ou um ponteiro para a referida primeira foto; em que a referida primeira posição é anterior à referida segunda posição no fluxo;
4. Breve Descrição de Desenhos
[012] A presente divulgação será melhor compreendida e outros recursos e vantagens específicos surgirão após a leitura da descrição a seguir, a descrição fazendo referência aos desenhos anexos em que:
[013] A Figura 1 mostra um modelo tridimensional (3D) de um objeto e os pontos de uma nuvem de pontos correspondentes ao modelo 3D, de acordo com uma modalidade não restritiva dos presentes princípios;
[014] A Figura 2 mostra uma imagem representando uma cena tridimensional compreendendo uma representação da superfície de vários objetos capturados como uma nuvem de pontos, de acordo com uma modalidade não restritiva dos presentes princípios;
[015] A Figura 3 ilusta um exemplo da codificação, transmissão e decodificação de uma sequência de cenas 3D, de acordo com uma modalidade não restritiva dos presentes princípios;
[016] A Figura 4 ilustra dois patches em relação à cena 3D da figura 2, cada patch compreendendo uma foto em cores, uma foto em profundidade e dados de desprojeção, de acordo com uma modalidade não restritiva dos presentes princípios;
[017] A Figura 5 ilustra uma estrutura cruzada dos patches gerados pelo processo de projeção, de acordo com uma modalidade não restritiva dos presentes princípios;
[018] A Figura 6 ilustra um pacote dos patches obtidos em imagens em cores e em profundidade, de acordo com uma modalidade não restritiva dos presentes princípios;
[019] A Figura 7 mostra um exemplo de uma modalidade da sintaxe de um fluxo quando os dados são transmitidos através de um protocolo de transmissão baseado em pacote, de acordo com uma modalidade não restritiva dos presentes princípios;
[020] A Figura 9 ilustra um método para codificar uma nuvem de pontos em um fluxo, em um dispositivo da figura 8 configurado para ser um codificador 31 da figura 3, de acordo com uma modalidade não restritiva dos presentes princípios;
[021] A Figura 10 ilusta um método para decodificar uma cena tridimensional de um fluxo, em um dispositivo da figura 8 configurado para ser um dispositivo 33 da figura 3, de acordo com uma modalidade não restritiva dos presentes princípios.
5. Descrição Detalhada de Modalidades
[022] Os presentes princípios serão descritos mais detalhadamente daqui em diante com referência às figuras anexas, nas quais são mostrados exemplos dos presentes princípios. Os presentes princípios podem, no entanto, ser incorporados em muitas formas alternativas e não devem ser interpretados como limitados aos exemplos aqui apresentados. Por conseguinte, embora os presentes princípios sejam suscetíveis a várias modificações e formas alternativas, exemplos específicos dos mesmos são mostrados a título de exemplos nos desenhos e serão aqui descritos em detalhes. Deve-se entender, no entanto, que não há intenção de limitar os presentes princípios às formas particulares divulgadas, mas, pelo contrário, a divulgação deve abranger todas as modificações, equivalentes e alternativas que se enquadram no espírito e no escopo dos presentes princípios conforme definido pelas reivindicações.
[023] A terminologia usada neste documento tem o objetivo de descrever apenas exemplos particulares e não se destina a limitar os presentes princípios. Como usado aqui, as formas singulares "a", "o", "uma" e "um" também pretendem incluir as formas plurais, a menos que o contexto indique claramente o contrário.
Será entendido ainda que os termos "compreende", "compreendendo", "inclui" e/ou "incluindo", quando utilizados nesta especificação, especificam a presença de recursos declarados, números inteiros, etapas, operações, elementos e/ou componentes, mas não impede a presença ou adição de um ou mais recursos, números inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos. Além disso, quando um elemento é referido como "responsivo" ou "conectado" a outro elemento, ele pode ser diretamente responsivo ou conectado ao outro elemento, ou elementos intervenientes podem estar presentes. Em contraste, quando um elemento é referido como "diretamente responsivo" ou "diretamente conectado" a outro elemento, não há elementos intervenientes presentes. Como aqui utilizado, o termo "e/ou" inclui toda e qualquer combinação de um ou mais dos itens listados associados e pode ser abreviado como "/".
[024] Será entendido que, embora os termos primeiro, segundo, etc. possam ser usados aqui para descrever vários elementos, esses elementos não devem ser limitados por esses termos. Esses termos são usados apenas para distinguir um elemento do outro. Por exemplo, um primeiro elemento pode ser denominado segundo elemento e, da mesma forma, um segundo elemento pode ser denominado primeiro elemento sem se afastar dos ensinamentos dos presentes princípios.
[025] Embora alguns dos diagramas incluam setas nos percursos de comunicação para mostrar uma direção primária de comunicação, deve-se entender que a comunicação pode ocorrer na direção oposta às setas representadas.
[026] Alguns exemplos são descritos com 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 as funções lógicas especificadas. Também deve ser observado que em outras implementações, as funções observadas nos blocos podem ocorrer fora da ordem mencionada. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados substancialmente de forma simultânea ou os blocos às vezes podem ser executados na ordem inversa, dependendo da funcionalidade envolvida.
[027] A referência aqui mencionada a "de acordo com um exemplo" ou "em um exemplo" significa que um recurso, estrutura ou característica específica descritos em conexão com o exemplo podem ser incluídos em pelo menos uma implementação dos presentes princípios. As aparências da frase “de acordo com um exemplo” ou “em um exemplo” em vários lugares da especificação não estão necessariamente se referindo ao mesmo exemplo, nem exemplos separados ou alternativos necessariamente e mutuamente exclusivos de outros exemplos.
[028] Números de referência que aparecem nas reivindicações são meramente ilustrativos e não terão efeito limitador no escopo das reivindicações. Embora não seja explicitamente descrito, os presentes exemplos e variantes podem ser empregues em qualquer combinação ou subcombinação.
[029] Os presentes princípios são descritos para codificar / decodificar uma cena tridimensional (3D) ou uma sequência de cenas tridimensionais em e a partir de um fluxo de dados.
[030] A Figura 1 mostra um modelo tridimensional (3D) de um objeto 10 e os pontos de uma nuvem de pontos 11 correspondentes ao modelo 3D 10. O modelo pode ser uma representação de malha 3D e os pontos da nuvem de pontos 11 podem ser os vértices da malha. Os pontos 11 também podem ser pontos espalhados na superfície das faces da malha. O modelo 10 também pode ser representado como uma versão salpicada do ponto da nuvem 11; isto é, a superfície do modelo 10 é criada salpicando o ponto de ponto da nuvem 11. O modelo 10 também pode ser representado por muitas representações diferentes, como voxels ou estrias. A Figura 1 ilustra que sempre é possível definir uma nuvem de pontos a partir de uma representação de superfície de um objeto 3D. Reciprocamente, é sempre possível criar uma representação de superfície de um objeto 3D a partir de um ponto da nuvem. Como usado aqui, projetar pontos de um objeto 3D (por pontos de extensão de uma cena 3D) para uma imagem é equivalente a projetar qualquer representação desse objeto 3D em uma imagem.
[031] A Figura 2 mostra uma imagem 20 representando uma cena tridimensional compreendendo uma representação de superfície de vários objetos capturados como uma nuvem de pontos. A imagem 20 é gerada de um ponto de vista diferente do ponto de vista de aquisição. Por exemplo, o personagem à direita da imagem 20 não está completo, pontos de seu braço esquerdo e suas costas não estão disponíveis (por exemplo, eles não foram capturados) para preencher a representação da superfície. A cena 3D pode compreender diferentes tipos de representação. Por exemplo, os personagens da cena são representados como nuvens de pontos, enquanto as estátuas são representadas como malhas texturizadas. Uma cena 3D é sempre renderizada do ponto de vista. Todos os pontos da cena não são visíveis do ponto de vista, algumas partes da cena são ocultadas por partes visíveis. Um visualizador de um vídeo volumétrico pode se mover dentro da cena 3D em uma área que define um conjunto de possíveis pontos de vista. Cada ponto da cena 3D visível desse conjunto de possíveis pontos de vista deve ser codificado. Um fluxo de dados de vídeo volumétrico codifica uma sequência de cenas 3D. Algumas partes da cena 3D mudam ao longo do tempo (por exemplo, personagens em movimento, mudanças nas condições de iluminação) e outras permanecem estáticas (por exemplo, a geometria de objetos estruturais, como parede ou piso). Os presentes princípios incorporam uma solução para limitar, tanto quanto possível, a codificação múltipla de partes da cena 3D que não muda ao longo do tempo, a fim de limitar a taxa de bits necessária e acelerar a decodificação.
[032] A Figura 3 ilusta um exemplo da codificação, transmissão e decodificação de uma sequência de cenas 3D. Uma sequência de pelo menos cena
3D 30 é codificada em um fluxo 32 por um codificador 31 de acordo com os princípios do presente método de codificação. Um decodificador 33 obtém o fluxo 32 de uma fonte. Por exemplo, a fonte pertence a um conjunto que compreende: - uma memória local, 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 Leitura), um disco rígido; - uma interface de armazenamento, por exemplo, uma interface com armazenamento em massa, uma RAM, uma memória flash, uma ROM, um disco óptico ou um suporte magnético; - uma interface de comunicação, por exemplo, uma interface cabeada (por exemplo, uma interface de barramento, uma interface de rede de área ampla, uma interface de rede de área local) ou uma interface sem fio (como uma interface IEEE
802.11 ou uma interface BluetoothO); e - uma interface de usuário, como uma Interface Gráfica de Usuário, permitindo que o usuário insira dados.
[033] O decodificador 33 decodifica uma sequência de cenas 3D 34 do fluxo 32 de acordo com o presente método de decodificação. De acordo com os presentes princípios, a sequência da cena 3D 34 é tão semelhante à sequência das cenas 3D quanto possível. A sequência das cenas 3D 34 pode ser obtida a partir de uma fonte por um renderizado 35. O renderizador 35 calcula imagens a serem exibidas para uma experiência de visualização de vídeo 6DoF.
[034] De acordo com os presentes princípios, as imagens são obtidas projetando pontos da cena 3D em mapas de projeção de acordo com um mapeamento de projeção. Muitos mapeamentos de projeção podem ser usados para gerar patches tais como mapeamento equirretangular, mapeamento em cubo, mapeamento piramidal ou mapeamento ortonormal. Um patch compreende: - uma foto em cores resultante da projeção das texturas em um mapa de projeção, - uma foto em profundidade armazenando as informações de geometria, isto é, a distância entre os pontos da cena e o mapa de projeção; e - dados de desprojeção que são dados que permitem recuperar a parte da cena codificada nas duas fotos. Dados de desprojeção são usados pelo decodificador para desprojetar os pixels em cores da foto em cores no espaço 3D a uma profundidade determinada pelos valores de pixel da foto em profundidade.
[035] A Figura 4 ilustra dois patches em relação à cena 3D da figura 2, cada patch compreendendo uma foto em cores, uma foto em profundidade e dados de desprojeção. Diferentes processos de projeção podem ser usados para gerar patches. Por exemplo, os patches podem ser gerados por um processo de projeção de descamação. Outra possibilidade é usar Octrees de projeções de mapeamento em cubo. Qualquer processo de projeção adequado pode ser usado para gerar um patch. Um processo de projeção adequado aos presentes princípios gera um conjunto de patches, patches compreendendo uma foto em cores, uma foto em profundidade (ou uma foto exclusiva que armazena ambos dados de pixel) e dados de desprojeção para permitir que o decodificador decodifique a cena tridimensional das duas fotos. No exemplo de um mapeamento de projeção equirretangular, os dados de desprojeção podem compreender coordenadas do centro de projeção, o ângulo sólido no quadro de referência ao qual o patch corresponde (por exemplo, [êmin, max], [omin, Emax]) e um intervalo de valor em profundidade usado para codificar a profundidade na foto em profundidade. Todos os dados necessários para desprojetar as informações armazenadas nas duas fotos pelo processo de projeção são incluídos nos dados de desprojeção. Esses dados permitem que o decodificador recupere as coordenadas 3D e a cor dos pontos projetados nos dois mapas de projeção. No exemplo da figura 4, um patch 40 é gerado compreendendo uma foto em cores 401, uma foto em profundidade 402 e um conjunto de dados de desprojeção 403. Este patch codifica dados representativos do lado frontal de um dos personagens da cena 3D da figura 2. A foto em cores 401 é o resultado das projeções dos pontos desta parte da cena em um plano localizado no espaço 3D da cena. Pixels em profundidade, a foto 402 armazena as distâncias entre este plano e esta parte da cena 3D. No exemplo da figura 4, quanto mais brilhante o pixel em profundidade, mais próximo do plano o ponto da cena. Um pixel em profundidade preto significa que não há informações em cores nessas coordenadas na foto em cores. Um segundo exemplo do patch 41 é fornecido na figura 4. O patch 41 corresponde a uma parte de um segundo personagem da cena 3D da figura 2. O patch 41 compreende uma foto em cores 411, uma foto em profundidade 412 e dados de desprojeção 413. Os dados de desprojeção 413 são dados de desprojeção de id diferente 403. No exemplo de um mapeamento de projeção equirretangular, o centro de projeção pode ser diferente, o ângulo sólido do espaço 3D codificado nessas duas fotos é diferente e a dinâmica da codificação em profundidade na foto em profundidade também pode ser diferente. Os patches podem ter tamanhos e formas diferentes. Nos exemplos do presente documento, todo patch é retangular. Este é apenas um exemplo e, de acordo com o processo de projeção, os patches podem ter qualquer forma (por exemplo, uma elipse ou um trapézio). Se não forem definidas por padrão, essas informações serão incluídas nos dados de desprojeção.
[036] De acordo com os presentes princípios, um conjunto de patches representativos da cena 3D a codificar é obtido de acordo com qualquer método adequado. Esses patches são agrupados em imagens em cores e em profundidade para serem adicionados à faixa de vídeo de um fluxo de dados, por exemplo, de acordo com o padrão ISO BMFF. O tamanho cumulativo das fotos em cores e em profundidade das patches para uma cena 3D pode ser substancial.
[037] A Figura 5 ilustra uma estrutura cruzada dos patches gerados pelo processo de projeção. Para uma determinada cena 3D, um conjunto de patches 51 ou 53 é gerado. O número de patches em conjuntos de patches pode variar ao longo da sequência de cenas 3D. Um patch 52a, 52b, 52c ou 52d é definido de acordo com seus dados de desprojeção. Uma patch 52b de um conjunto de patches 53 pertence à mesma sequência de patches 54 que o patch 52a de um conjunto anterior de patches 51 se tiver os mesmos valores de dados de desprojeção. Em outras palavras, dois patches 52a e 52b são equivalentes quando eles são o resultado de uma mesma projeção, ou seja, quando os pontos da cena 3D foram projetados nas mesmas condições. No exemplo da figura 5, seis conjuntos de patches são representados, formando quatro sequências de patches 54 a 57.
[038] Os patches de uma sequência de patches são comparados para determinar se a foto de cor ou em profundidade do patch é estática ou não estática. Uma foto é definida como estática se a foto for repetida pelo menos duas vezes na sequência. Qualquer método para determinar se uma foto é repetida em um conjunto de fotos é adequado para o presente teste. Por exemplo, se a distância euclidiana entre duas fotos em profundidade for inferior a um limite, as duas fotos em profundidade serão consideradas equivalentes e serão definidas para o status estático. No exemplo da figura 5, a sequência de patch 54 compreende um patch 52c com uma foto em profundidade equivalente à foto em profundidade do patch 52d. A sequência de patch 55 compreende três fotos em profundidade equivalentes; sequência de patch 56, quatro fotos em profundidade equivalentes e sequência de patch 57, duas fotos em profundidade equivalentes. Neste exemplo da figura 5, apenas fotos em profundidade são consideradas por uma questão de simplicidade e porque a equivalência é muito mais frequente entre fotos em profundidade (ou seja, a geometria da parte projetada da cena) do que entre fotos em cores que são mais mutáveis devido às variações de condição de iluminação.
[039] A Figura 6 ilustra a empacotamento dos patches obtidos em imagens em cores e em profundidade. Uma operação de empacotamento é realizada em todas as fotos em cores não estáticas obtidas para uma cena 3D para gerar uma imagem em cores 61 e em todas as fotos em profundidade não estáticas para gerar uma imagem em cores 62. Existem numerosos algoritmos heurísticos para resolver o problema NP-completo de empacotar células retangulares em um feixe retangular (ou seja, a imagem a ser gerada), como o algoritmo descrito em “A Thousand Ways to Pack the Bin” por Jukka Jylânki, por exemplo, ou o algoritmo “MaxRects” (ou seja, feixe único - configuração Melhor Primeiro Lado Curto), que fornece boa taxa de preenchimento a custos computacionais bastante baixos. No final da operação de empacotamento, um local (x, y) (por exemplo, posição do canto inferior esquerdo), uma forma (por exemplo, retângulo, elipse) e um tamanho da foto em cores na imagem e, de acordo com o algoritmo de empacotamento, um valor booleano indicando se o patch foi girado é atribuído a cada patch da lista de itens de dados de patch. O empacotamento pode ser otimizado alinhando as fotos em cores nas Unidades de Codificação do codificador de vídeo, a fim de melhorar o estágio de decodificação. A Figura 6 mostra uma foto na qual estão fotos em cores e em profundidade das figuras 4 e 5. As fotos em cores e em profundidade estáticas não são empacotadas na imagem em cores e imagem em profundidade. Isso tem a vantagem de gerar imagens em cores e em profundidade menores. Na verdade, as fotos estáticas são repetidas ao longo do tempo e podem ser codificadas apenas uma vez, em vez de serem repetidas para cada conjunto de patches em que elas aparecem.
[040] A Figura 7 mostra um exemplo de uma modalidade da sintaxe de um fluxo quando os dados são transmitidos por um protocolo de transmissão baseado em pacotes. A Figura 7 mostra um exemplo de estrutura 70 de um fluxo de vídeo volumétrico. A estrutura consiste em um recipiente que organiza o fluxo em elementos independentes de sintaxe. A estrutura pode compreender uma parte de cabeçalho 71, que é um conjunto de dados comuns a todos os elementos de sintaxe do fluxo. Por exemplo, a parte do cabeçalho compreende metadados sobre elementos de sintaxe, descrevendo a natureza e o papel de cada um deles. A parte do cabeçalho também pode incluir informações sobre o tamanho e a resolução de imagens e fotos. A estrutura compreende uma carga útil que compreende pelo menos uma faixa de vídeo 72 e uma faixa de imagem 73.
[041] A faixa de vídeo compreende quadros de vídeo da sequência de cenas 3D (ou seja, a sequência de imagens em cores empacotadas geradas e imagens em profundidade associadas aos seus itens de dados de patch). A faixa de vídeo está estruturada para armazenar dados temporais do vídeo. Um tripleto de imagem em cores, imagem em profundidade e conjunto de itens de dados de patch é inserido na faixa de vídeo do fluxo de dados em uma posição relativa à marca de tempo da cena 3D relacionada na sequência de cenas 3D. Quando dados em cores em um item de dados de patch aponta para uma foto estática armazenada na faixa de imagem do fluxo de dados, essa foto é inserida em uma posição anterior do fluxo de dados. Em outras palavras, na decodificação, a foto é recebida antes do item de dados de patch apontando para ela.
[042] A faixa de imagem porta dados de imagem e de foto sem recurso temporal. Todas as fotos em cores e em profundidade estáticas são inseridas na faixa de imagem do fluxo de dados em uma posição que é anterior à posição do primeiro item de dados que aponta para esta foto. Dessa maneira, na decodificação, a foto é recebida antes do item de dados de patch apontando para ela.
[043] Para fins de ilustração, no contexto do padrão de formato de arquivo ISOBMFF, mapa em cores, mapa em profundidade e os metadados normalmente seriam referenciados nas faixas ISOBMFF em uma caixa do tipo MOOV, com os dados de mapa em cores e de mapa em profundidade incorporados na caixa de dados de mídia do tipo mdat.
[044] A Figura 8 mostra um exemplo de arquitetura de um dispositivo 80 que pode ser configurado para implementar um método descrito em relação às figuras 9 e/ou 10. O dispositivo 80 pode ser configurado para ser um codificador 31 ou um decodificador 33 da figura 3.
[045] O dispositivo 80 compreende os seguintes elementos que estão ligados entre si por um barramento de dados e endereço 81: - um microprocessador 82 (ou CPU), que é, por exemplo, um DSP (ou Processador de Sinal Digital); - uma ROM (ou memória somente leitura) 83; - uma RAM (ou memória de acesso aleatório) 84; - uma interface de armazenamento 85; - uma interface de E/S 86 para recepção de dados a serem transmitidos, a partir de um aplicativo; e - uma fonte de alimentação, por exemplo, uma bateria.
[046] De acordo com um exemplo, a fonte de alimentação é externa ao dispositivo. Em cada uma das memórias mencionadas, a palavra «registrador» usada na especificação pode corresponder a uma área de pequena capacidade (alguns bits) ou a uma área muito grande (por exemplo, um programa inteiro ou uma grande quantidade de dados recebidos ou decodificados). A ROM 83 compreende pelo menos um programa e parâmetros. A ROM 83 pode armazenar algoritmos e instruções para executar técnicas de acordo com os presentes princípios. Quando ligada, a CPU 82 carrega o programa para a RAM e executa as instruções correspondentes.
[047] A RAM 84 compreende, em um registrador, o programa executado pela CPU 82 e carregado após a ativação do dispositivo 80, dados de entrada em um registrador, dados intermediários em diferentes estados do método em um registrador e outras variáveis usadas para a execução do método em um registrador.
[048] As implementações descritas neste documento podem ser implementadas em, por exemplo, um método ou processo, um aparelho, um produto de programa de computador, um fluxo de dados ou um sinal. Mesmo se discutida apenas no contexto de uma única forma de implementação (por exemplo, discutida apenas como método ou dispositivo), a implementação dos recursos discutidos também pode ser implementada de outras formas (por exemplo, um programa). Um aparelho pode ser implementado em, por exemplo, hardware, software e firmware apropriados. Os métodos podem ser implementados em, por exemplo, um aparelho como, por exemplo, um processador, que se refere a dispositivos de processamento em geral, incluindo, 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 facilitam a comunicação de informações entre os usuários finais.
[049] De acordo com um exemplo de codificação ou um codificador 31 da figura 3, a função tridimensional A cena 30 é obtida de uma fonte. Por exemplo, a fonte pertence a um conjunto que compreende: - uma memória local (83 ou 84), 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 leitura), um disco rígido; - uma interface de armazenamento (85), por exemplo, uma interface com armazenamento em massa, RAM, memória flash, ROM, disco óptico ou suporte magnético; - uma interface de comunicação (86), por exemplo, uma interface cabeada (por exemplo, uma interface de barramento, uma interface de rede de área ampla, uma interface de rede de área local) ou uma interface sem fio (como uma interface IEEE 802.11 ou uma interface BluetoothO); e - uma interface de usuário, como uma Interface Gráfica de Usuário,
permitindo que o usuário insira dados.
[050] De acordo com exemplos de decodificação ou decodificador (s) 33 da figura 3, o fluxo é enviado para um destino; especificamente, o destino pertence a um conjunto que compreende: - uma memória local (83 ou 84), por exemplo, uma memória de vídeo ou RAM, uma memória flash, um disco rígido; - uma interface de armazenamento (85), por exemplo, uma interface com armazenamento em massa, RAM, memória flash, ROM, disco óptico ou suporte magnético; e - uma interface de comunicação (86), por exemplo, uma interface cabeada (por exemplo, uma interface de barramento (por exemplo, USB (ou Barramento Universal Serial)), uma interface de rede de área ampla, uma interface de rede de área local, uma interface HDMI (Interface Multimídia de Alta Definição)) ou uma interface sem fio (como uma Interface IEEE 802.11, WiFi& ou BluetoothO).
[051] De acordo com exemplos de codificação ou codificador, um fluxo de bits compreendendo dados representativos da cena volumétrica é enviado para um destino. Como um exemplo, o fluxo de bits é armazenado em uma memória local ou remota, por exemplo, uma memória de vídeo (84) ou uma RAM (84), um disco rígido (83) Em uma variante, o fluxo de bits é enviado para uma interface de armazenamento (85), por exemplo, uma interface com um armazenamento em massa, uma memória flash, ROM, um disco óptico ou um suporte magnético e/ou transmitida através de uma interface de comunicação (86), por exemplo, uma interface para um link ponto a ponto, um barramento de comunicação, um link ponto a multiponto ou uma rede de transmissão.
[052] De acordo com exemplos de decodificação ou decodificador ou renderizador 33 da figura 3, o fluxo de bits é obtido a partir de uma fonte. Exemplarmente, o fluxo de bits é lido a partir de uma memória local, por exemplo,
uma memória de vídeo (84), uma RAM (84), uma ROM (83), uma memória flash (83) ou um disco rígido (83). Em uma variante, o fluxo de bits é recebido de uma interface de armazenamento (85), 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 de uma interface de comunicação (85), por exemplo, uma interface para um link ponto a ponto, um barramento, um link ponto a multiponto ou uma rede de transmissão.
[053] De acordo com exemplos, o dispositivo 80 é configurado para implementar um método descrito em relação às figuras 9 ou 10 e pertence a um conjunto que compreende: - um dispositivo móvel; - um dispositivo de comunicação; - um dispositivo de jogo; - um tablet (ou computador tablet); - um laptop; - uma câmera fotográfica; - uma câmera de vídeo; - um chip de codificação; - um servidor (por exemplo, um servidor de radiodifusão, um servidor de vídeo sob demanda ou um servidor web).
[054] A Figura 9 ilustra um método para codificar uma nuvem de pontos em um fluxo, em um dispositivo 80 (descrito em relação à figura 8) configurado para ser um codificador, de acordo com uma modalidade não restritiva dos presentes princípios.
[055] Na etapa 90, os diferentes parâmetros do dispositivo 80 são atualizados. Em particular, a sequência de cenas 3D é obtida a partir de uma fonte, um conjunto de possíveis pontos de vista é determinado no espaço da cena 3D e tamanhos e resoluções dos mapas de projeção, fotos e imagens são determinados.
[056] Em uma etapa 91, um processo de projeção é realizado na sequência de cenas 3D, a fim de obter uma estrutura cruzada de conjuntos de patches e uma sequência de patches, conforme descrito em relação à figura 5. Um patch é uma estrutura de dados que reúne dados de desprojeção, uma foto em cores e uma foto em profundidade. Um conjunto de patches é representativo da parte da cena visível de todos os pontos de vista do conjunto de possíveis pontos de vista. Qualquer método adequado pode ser usado para obter esses conjuntos de fotos em cores e profundidade. Dados de desprojeção são dados necessários para realizar a desprojeção das fotos em cores e em profundidade. Eles são computados a partir dos parâmetros do processo de projeção e armazenados na estrutura de dados de patch.
[057] Em uma etapa 92, é realizado um processo nessa estrutura cruzada de dados para determinar fotos estáticas e não estáticas em cores e profundidade. Os patches de uma sequência de patches são comparados para determinar se a foto em cor ou foto em profundidade do patch é estática ou não estática. Uma foto é definida como estática se a foto for repetida pelo menos duas vezes na sequência, conforme descrito em relação à figura 5.
[058] Em uma etapa 93, para cada conjunto de patches, um processo de empacotamento é realizado para cada foto em cores não estática do conjunto de patches para gerar uma imagem em cores e um processo de empacotamento é realizado para cada foto em profundidade não estática do conjunto de patches para gerar uma imagem em profundidade. Qualquer método adequado para empacotar com eficiência as fotos em uma imagem pode ser usado nesta etapa. A imagem em cores também é chamada de atlas de patch em cores. As fotos em cores são dispostas na imagem em cores com uma determinada resolução angular (por exemplo, 3 segundos por pixel ou 5 segundos por pixel) de acordo com o tamanho que a projeção dos pontos da foto em cores ocupará no atlas de patch em cores. À localização de uma foto em cores na imagem em cores é armazenada em uma estrutura de dados chamada dados em cores. Se a forma de fotos em cores não for definida por padrão (por exemplo, um retângulo), a forma usada para essa foto em cores na imagem em cores será armazenada na estrutura de dados em cores. Se a resolução das fotos em cores empacotadas na imagem em cores não for constante (ou seja, não for a mesma para cada foto em cores), o tamanho da foto em cores na imagem em cores será armazenado nos dados em cores. O mesmo processo é aplicado às fotos em profundidade.
[059] Em uma etapa 94, o fluxo de dados que compreende uma faixa de vídeo e uma faixa de imagem é gerado de acordo com a estrutura descrita em relação à figura 7. Fotos estáticas são inseridas na faixa de imagem do fluxo de dados em uma posição no fluxo de dados. Uma posição é um local no fluxo de dados indicando em que momento o elemento em questão será lido pelo decodificador. Quanto antes a posição, mais cedo o elemento é decodificado quando o fluxo é lido. Uma foto estática é inserida em uma posição anterior à posição do primeiro item de dados de patch apontando para ela. Imagens em cores geradas, imagens em profundidade e itens de dados de patch associados são codificados na faixa de vídeo com informações temporais relacionadas.
[060] A Figura 10 ilusta um método para decodificar uma cena tridimensional de um fluxo, em um dispositivo 80 (descrito em relação à figura 8) configurado para ser um dispositivo 33 da figura 3, de acordo com uma modalidade não restritiva dos presentes princípios.
[061] Na etapa 100, os diferentes parâmetros do dispositivo 80 são atualizados. Em particular, o fluxo é obtido de uma fonte, um conjunto de possíveis pontos de vista é determinado no espaço da cena 3D. Em uma variante, o conjunto de possíveis pontos de vista é decodificado do fluxo.
[062] Na etapa 101, as fotos estáticas disponíveis na faixa de imagem do fluxo de dados nesta etapa são lidas e armazenadas na memória. As fotos estáticas são lidas apenas uma vez e mantidas na memória até o final da leitura do fluxo de dados. Em uma variante, um processo de coletor de lixo é implementado para remover da memória as fotos estáticas que não são mais apontadas no próximo fluxo de dados.
[063] Na etapa 102, um tripleto de dados compreendendo uma imagem em cores, uma imagem em profundidade e um conjunto de itens de dados de patch é obtido a partir da faixa de vídeo do fluxo de dados. Um item de dados de patch compreende dados em cores para recuperar uma foto em cores, dados de geometria para recuperar uma foto em profundidade e dados de desprojeção representativos de parâmetros usados para gerar ambas fotos em cores e em profundidade e necessários para processar a operação de desprojeção. Os dados em cores de um item de dados de patch podem compreender o local (e, opcionalmente, a forma e/ou o tamanho) da foto em cores na imagem em cores na qual ela está empacotada. Os dados em cores podem, em vez disso, compreender um ponteiro para uma foto estática que foi lida a partir da faixa de imagem do fluxo de dados. Os dados da geometria são construídos no mesmo modelo. A foto em profundidade pode ser recuperada quer da imagem em profundidade ou na lista de fotos em profundidade estáticas já lidas.
[064] Em uma etapa 103, os pixels da foto em cores são projetados usando os dados de projeção a uma profundidade calculada de acordo com a função paramétrica inicializada. Uma parte da cena é decodificada.
[065] Quando as etapas 102 e 103 foram executadas em cada item de dados de patch, toda a cena 3D foi decodificada. Em uma etapa 104, a cena 3D decodificada é transmitida para outro módulo, por exemplo, um renderizador 35 da figura 3.
[066] Naturalmente, a presente divulgação não se limita às modalidades descritas anteriormente. Em particular, a presente divulgação não se limita a métodos e dispositivos para codificar / decodificar um fluxo que transporta dados representativos de uma cena tridimensional (ou uma sequência de cenas tridimensionais), mas também se estende a métodos de renderização de uma cena 3D em um 3 graus de liberdade ou de maneira volumétrica (por exemplo, 3DoF+ ou 6DoF) a qualquer dispositivo que implemente esses métodos e, em particular, a dispositivos que incluam pelo menos uma CPU e/ou pelo menos uma GPU.
[067] A presente divulgação também se refere a um método (e um dispositivo configurado) para exibir imagens renderizadas a partir do fluxo de dados compreendendo a informação representativa da cena tridimensional.
[068] A presente divulgação também se refere a um método (e um dispositivo configurado) para transmitir e/ou receber o fluxo codificado de acordo com os presentes princípios.
[069] As = implementações descritas neste documento podem ser implementadas em, por exemplo, um método ou processo, um aparelho, um produto de programa de computador, um fluxo de dados ou um sinal. Mesmo se discutida apenas no contexto de uma única forma de implementação (por exemplo, discutida apenas como método ou dispositivo), a implementação dos recursos discutidos também pode ser implementado de outras formas (por exemplo, um programa). Um aparelho pode ser implementado em, por exemplo, hardware, software e firmware apropriados. Os métodos podem ser implementados em, por exemplo, um aparelho como, por exemplo, um processador, que se refere a dispositivos de processamento em geral, incluindo, por exemplo, um computador, um microprocessador, um circuito integrado ou um dispositivo de lógica programável. Os processadores também incluem dispositivos de comunicação, tais como, por exemplo, Smartphones, tablets, computadores, telefones celulares, assistentes digitais portáteis / pessoais ("PDAs")
e outros dispositivos que facilitam a comunicação de informações entre os usuários finais.
[070] As implementações dos vários processos e recursos descritos neste documento podem ser incorporadas em uma variedade de diferentes equipamentos ou aplicações, particularmente, por exemplo, equipamentos ou aplicações associadas à codificação de dados, decodificação de dados, geração de exibição, processamento de textura e outro processamento de imagens e outras informações de textura e/ou informações de profundidade. Exemplos de tais equipamentos incluem um codificador, um decodificador, uma saída de processamento pós- processador de um decodificador, um pré-processador que fornece entrada para um codificador, um codificador de vídeo, um decodificador de vídeo, um codec de vídeo, um servidor Web, um set-top box, um laptop, um computador pessoal, um telefone celular, um PDA, e outros dispositivos de comunicação. Como deve ficar claro, o equipamento pode ser móvel e até instalado em um veículo móvel.
[071] Além disso, os métodos podem ser implementados por instruções executadas por um processador, e essas instruções (e/ou valores de dados produzidos por uma implementação) podem ser armazenadas em um meio legível por processador, tais como, por exemplo, um circuito integrado, um software portador ou outro dispositivo de armazenamento, tais como, por exemplo, um disco rígido, um disquete compacto (“CD”), um disco óptico (tais como, por exemplo, um DVD, geralmente chamado de disco versátil digital ou um disco de vídeo digital), uma memória de acesso aleatório (“RAM”) ou uma memória somente leitura (“ROM”). As instruções podem formar um programa de aplicativo tangivelmente incorporado em um meio legível por processador. As instruções podem estar, por exemplo, em hardware, firmware, software ou uma combinação. As instruções podem ser encontradas em, por exemplo, um sistema operacional, um aplicativo separado ou uma combinação dos dois. Um processador pode ser caracterizado,
portanto, como, por exemplo, um dispositivo configurado para executar um processo e um dispositivo que inclui um meio legível por processador (como um dispositivo de armazenamento) tendo instruções para executar um processo. Além disso, um meio legível por processador pode armazenar, em adição a ou em vez de instruções, valores de dados produzidos por uma implementação.
[072] Como será evidente para um especialista 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 executar 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 uma modalidade descrita, ou para portar como dados os valores reais da sintaxe escritos por uma modalidade descrita. Esse sinal pode ser formatado, por exemplo, como uma onda eletromagnética (por exemplo, usando uma porção de espectro de radiofrequência) ou como um sinal de banda base. A formatação pode incluir, por exemplo, codificação de um fluxo de dados e modulação de uma portadora com o fluxo de dados codificado. A informação que o sinal porta pode ser, por exemplo, informação analógica ou digital. O sinal pode ser transmitido através de uma variedade de diferentes links com ou sem fio, como é conhecido. O sinal pode ser armazenado em um meio legível por processador.
[073] Várias implementações foram descritas. No entanto, será entendido que várias modificações podem ser feitas. Por exemplo, elementos de diferentes implementações podem ser combinados, suplementados, modificados ou removidos para produzir outras implementações. Além disso, um especialista na técnica entenderá que outras estruturas e processos podem ser substituídos pelos divulgados e as implementações resultantes desempenharão pelo menos substancialmente a mesma função (s), pelo menos substancialmente da mesma maneira (s), para atingir pelo menos substancialmente o mesmo resultado que as implementações divulgadas.
Por conseguinte, estas e outras implementações são contempladas por este pedido.
Claims (14)
1. Método para decodificar uma cena tridimensional a partir de um fluxo de dados compreendendo uma faixa de vídeo e uma faixa de imagem, o método CARACTERIZADO pelo fato de que compreende: - obter uma foto em uma primeira posição na faixa de imagem do referido fluxo de dados, pixels da referida foto compreendendo componente em profundidade e/ou de cor; - obter em uma segunda posição na faixa de vídeo do referido fluxo de dados: e uma imagem em cores compreendendo fotos em cores empacotadas na referida imagem em cores; e uma imagem em profundidade compreendendo fotos em profundidade empacotadas na referida imagem em profundidade; e + um conjunto de itens de dados de patch, um item de dados de patch que compreende: - dados de desprojeção; - uma localização de uma foto em cores na imagem em cores ou um ponteiro para a referida primeira foto; e - uma localização de uma foto em profundidade na imagem em profundidade ou um ponteiro para a referida primeira foto; em que a referida primeira posição é anterior à referida segunda posição no fluxo; e - para um item de dados de patch do referido conjunto, usar dados de desprojeção para desprojetar pixels da foto em cores a uma profundidade determinada por pixels da foto em profundidade.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o referido local de uma foto em cores na imagem em cores está associado a um tamanho e/ou uma forma da foto em cores.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a foto obtida a partir da faixa de imagem do fluxo de dados é armazenada em uma memória a ser apontada por um item de dados de patch posterior.
4. Método para codificar uma cena tridimensional em um fluxo de dados compreendendo uma faixa de vídeo e uma faixa de imagem, o método CARACTERIZADO pelo fato de que compreende: - obter um conjunto de patches, um patch pertencente a uma sequência de patches, um patch compreendendo dados de desprojeção, uma foto em cores e uma foto em profundidade; - para uma sequência de patches, determinar para cada foto em cores e foto em profundidade se a foto é uma foto estática ou foto não estática, uma foto sendo estática se a foto for repetida pelo menos duas vezes na sequência; - para um conjunto de patches: - gerar uma imagem em cores empacotando fotos em cores não estáticas do conjunto de patches; uma imagem em profundidade empacotando fotos em profundidade não estáticas do conjunto de patches; e um conjunto de itens de dados de patch, um item de dados de patch compreendendo, para um patch, os dados de desprojeção e + se a foto em cores for não estática, um local da foto em cores na imagem em cores; senão um ponteiro para uma foto estática na faixa de imagem do fluxo; e ese a foto em profundidade for não estática, um local da foto em profundidade na imagem em profundidade; senão um ponteiro para uma foto estática na faixa de imagem do fluxo; e - codificar a referida imagem em cores, imagem em profundidade e conjunto de itens de dados de patch em uma posição na faixa de vídeo do fluxo; - codificar fotos estáticas em cores e em profundidade na faixa de imagem do fluxo em uma posição anterior à posição de um primeiro ponteiro para a referida foto de cor ou em profundidade estática codificada na faixa de vídeo do fluxo.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que os dados em cores de um item de dados de patch adicionalmente compreendem uma descrição de um tamanho e/ou de uma forma da foto em cores na imagem em cores.
6. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que determinar se uma foto for repetida ou não em uma sequência de patches, é realizado computando uma distância entre a referida foto e outra foto da sequência de patches; ambas as fotos sendo repetidas se a distância for menor que um determinado limite.
7. Fluxo de dados portando dados representativos de uma cena tridimensional, o fluxo de dados CARACTERIZADO pelo fato de que compreende: - uma faixa de imagem compreendendo pelo menos uma foto em uma primeira posição no referido fluxo de dados, pixels da referida foto compreendendo profundidade e/ou componente; - uma faixa de vídeo compreendendo pelo menos um tripleto de dados em uma segunda posição no fluxo de dados, o tripleto de dados compreendendo: + uma imagem em cores compreendendo fotos em cores empacotadas na referida imagem em cores; e uma imagem em profundidade compreendendo fotos em profundidade empacotadas na referida imagem em profundidade; e - um conjunto de itens de dados de patch, um item de dados de patch compreendendo: - dados de desprojeção; - uma localização de uma foto em cores na imagem em cores ou um ponteiro para a referida primeira foto; e
- uma localização de uma foto em profundidade na imagem em profundidade ou um ponteiro para a referida primeira foto; em que a referida primeira posição é anterior à referida segunda posição no fluxo;
8. Fluxo de dados, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que o referido local de uma foto em cores na imagem em cores está associado a um tamanho e/ou a uma forma da cor.
9. Dispositivo para decodificar uma cena tridimensional de um fluxo de dados compreendendo uma faixa de vídeo e uma faixa de imagem, o dispositivo CARACTERIZADO pelo fato de que compreende uma memória associada a um processador configurado para: - obter uma foto em uma primeira posição na faixa de imagem do referido fluxo de dados, pixels da referida foto compreendendo profundidade e/ou componente; - obter em uma segunda posição na faixa de vídeo do referido fluxo de dados: * uma imagem em cores compreendendo foto em cores empacotadas na referida imagem em cores; * uma imagem em profundidade compreendendo fotos em profundidade empacotadas na referida imagem em profundidade; e * um conjunto de itens de dados de patch, um item de dados de patch que compreende: - dados de desprojeção; - uma localização de uma foto em cores na imagem em cores ou um ponteiro para a referida primeira foto; e - um local de uma foto em profundidade na imagem em profundidade ou um ponteiro para a referida primeira foto;
em que a referida primeira posição é anterior à referida segunda posição no fluxo; e - para um item de dados de patch do referido conjunto, utilizar dados de desprojeção para desprojetar pixels da foto em cores a uma profundidade determinada por pixels da foto em profundidade.
10. Dispositivo, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que o referido local de uma foto em cores na imagem em cores está associado a um tamanho e/ou a uma forma da foto em cores.
11. Dispositivo, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que a imagem obtida a partir da faixa de imagem do fluxo de dados é armazenada em uma memória a ser apontada por um item de dados de patch posterior.
12. Dispositivo para codificar uma cena tridimensional em um fluxo de dados compreendendo uma faixa de vídeo e uma faixa de imagem, o dispositivo CARACTERIZADO pelo fato de que compreende uma memória associada a um processador configurado para: - obter um conjunto de patches, um patch pertencente a uma sequência de patches, um patch compreendendo dados de desprojeção, uma foto em cores e uma foto em profundidade; - para uma sequência de patches, determinar para cada foto em cores e foto em profundidade se a foto é estática ou não estática, uma foto sendo estática se a foto for repetida pelo menos duas vezes na sequência; - para um conjunto de patches: - gerar uma imagem em cores empacotando fotos não estáticas do conjunto de patches; uma imagem em profundidade empacotando fotos em profundidade não estáticas do conjunto de patches; e um conjunto de itens de dados de patch, um item de dados de patch compreendendo, para um patch, os dados de desprojeção e
* se a foto em cores for não estática, um local da foto em cores na imagem em cores; senão um ponteiro para uma foto estática na faixa da imagem do fluxo; e * se a foto em profundidade for não estática, um local da foto em profundidade na imagem em profundidade; senão um ponteiro para uma foto estática na faixa de imagem do fluxo; - codificar a referida imagem em cores, imagem em profundidade e conjunto de itens de dados de patch em uma posição na faixa de vídeo do fluxo; - codificar fotos em cores e profundidade estáticas na faixa de imagem do fluxo em uma posição anterior à posição de um primeiro ponteiro para a referida foto em cores ou profundidade estática codificada na faixa de vídeo do fluxo.
13. Dispositivo, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que os dados em cores de um item de dados de patch adicionalmente compreendem uma descrição de um tamanho e/ou de uma forma da foto em cores na imagem em cores.
14. Dispositivo, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que determinar se uma foto é repetida em uma sequência de patches é realizada computando uma distância entre a referida foto e outra foto da sequência de patches; as duas fotos sendo repetidas se a distância for menor que um dado limite.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18305049.1 | 2018-01-19 | ||
EP18305049.1A EP3515067A1 (en) | 2018-01-19 | 2018-01-19 | A method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream |
PCT/EP2019/050832 WO2019141631A1 (en) | 2018-01-19 | 2019-01-14 | A method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112020014519A2 true BR112020014519A2 (pt) | 2020-12-08 |
Family
ID=61027628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112020014519-0A BR112020014519A2 (pt) | 2018-01-19 | 2019-01-14 | Método e aparelho para codificar e decodificar cenas tridimensionais em e a partir de um fluxo de dados |
Country Status (6)
Country | Link |
---|---|
US (1) | US11798195B2 (pt) |
EP (2) | EP3515067A1 (pt) |
KR (1) | KR20200108882A (pt) |
CN (1) | CN111742547B (pt) |
BR (1) | BR112020014519A2 (pt) |
WO (1) | WO2019141631A1 (pt) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022218981A1 (en) * | 2021-04-15 | 2022-10-20 | Interdigital Ce Patent Holdings, Sas | Volumetric video with long-term patch entity memory |
CN115103174A (zh) * | 2022-05-27 | 2022-09-23 | 南昌威爱信息科技有限公司 | 用于递送体积视频内容的方法和装置 |
US11688087B1 (en) * | 2022-08-26 | 2023-06-27 | Illuscio, Inc. | Systems and methods for using hyperspectral data to produce a unified three-dimensional scan that incorporates depth |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2575351B1 (fr) | 1984-12-21 | 1988-05-13 | Thomson Csf | Procede adaptatif de codage et de decodage d'une suite d'images par transformation, et dispositifs pour la mise en oeuvre de ce procede |
GB9314717D0 (en) | 1993-07-15 | 1993-08-25 | Philips Electronics Uk Ltd | Image processing |
US5519436A (en) | 1994-06-21 | 1996-05-21 | Intel Corporation | Static image background reference for video teleconferencing applications |
US9036714B2 (en) * | 2009-01-26 | 2015-05-19 | Thomson Licensing | Frame packing for video coding |
CN104221384A (zh) * | 2012-04-13 | 2014-12-17 | 夏普株式会社 | 用于发送和接收长期参考画面指示符的设备 |
RU2510589C2 (ru) | 2012-07-05 | 2014-03-27 | Вадим Витальевич Ярошенко | Способ кодирования цифрового видеоизображения |
CA2948903C (en) * | 2014-05-13 | 2020-09-22 | Pcp Vr Inc. | Method, system and apparatus for generation and playback of virtual reality multimedia |
WO2016002494A1 (ja) * | 2014-06-30 | 2016-01-07 | ソニー株式会社 | 情報処理装置および方法 |
EP3249921A1 (en) * | 2016-05-24 | 2017-11-29 | Thomson Licensing | Method, apparatus and stream for immersive video format |
US11405643B2 (en) * | 2017-08-15 | 2022-08-02 | Nokia Technologies Oy | Sequential encoding and decoding of volumetric video |
US10535161B2 (en) * | 2017-11-09 | 2020-01-14 | Samsung Electronics Co., Ltd. | Point cloud compression using non-orthogonal projection |
CN111566703B (zh) * | 2018-01-17 | 2023-10-20 | 索尼公司 | 图像处理装置和方法 |
EP3515066A1 (en) * | 2018-01-19 | 2019-07-24 | Thomson Licensing | A method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream |
US11202086B2 (en) * | 2018-03-01 | 2021-12-14 | Nokia Technologies Oy | Apparatus, a method and a computer program for volumetric video |
US11386524B2 (en) * | 2018-09-28 | 2022-07-12 | Apple Inc. | Point cloud compression image padding |
EP3745357A1 (en) * | 2019-05-28 | 2020-12-02 | InterDigital VC Holdings, Inc. | A method and apparatus for decoding three-dimensional scenes |
-
2018
- 2018-01-19 EP EP18305049.1A patent/EP3515067A1/en not_active Withdrawn
-
2019
- 2019-01-14 EP EP19700312.2A patent/EP3741110A1/en active Pending
- 2019-01-14 CN CN201980014197.5A patent/CN111742547B/zh active Active
- 2019-01-14 KR KR1020207023404A patent/KR20200108882A/ko not_active Application Discontinuation
- 2019-01-14 US US16/962,405 patent/US11798195B2/en active Active
- 2019-01-14 WO PCT/EP2019/050832 patent/WO2019141631A1/en unknown
- 2019-01-14 BR BR112020014519-0A patent/BR112020014519A2/pt unknown
Also Published As
Publication number | Publication date |
---|---|
WO2019141631A1 (en) | 2019-07-25 |
CN111742547B (zh) | 2023-06-16 |
US20210074025A1 (en) | 2021-03-11 |
US11798195B2 (en) | 2023-10-24 |
EP3741110A1 (en) | 2020-11-25 |
CN111742547A (zh) | 2020-10-02 |
KR20200108882A (ko) | 2020-09-21 |
EP3515067A1 (en) | 2019-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11790562B2 (en) | Method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream | |
KR102692926B1 (ko) | 3차원 객체들을 나타내는 포인트 클라우드를 인코딩하기 위한 방법 및 장치 | |
US11375235B2 (en) | Method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream | |
CN107454468B (zh) | 对沉浸式视频进行格式化的方法、装置和流 | |
BR112020007727A2 (pt) | método, aparelho e fluxo para formato de vídeo volumétrico | |
BR102017010904A2 (pt) | Método, aparelho e fluxo para formato de vídeo imersivo | |
CN112189345B (zh) | 用于编码或解码表示3d场景的数据的方法、设备或介质 | |
KR20200051784A (ko) | 3 자유도 및 볼류메트릭 호환 가능한 비디오 스트림을 인코딩 및 디코딩하기 위한 방법들 및 디바이스들 | |
EP3562159A1 (en) | Method, apparatus and stream for volumetric video format | |
KR20190046850A (ko) | 몰입형 비디오 포맷을 위한 방법, 장치 및 스트림 | |
BR112020014519A2 (pt) | Método e aparelho para codificar e decodificar cenas tridimensionais em e a partir de um fluxo de dados | |
BR112020020003A2 (pt) | método e dispositivo para codificar a geometria de uma nuvem de pontos | |
CN114095737B (zh) | 媒体文件封装及解封装方法、装置、设备及存储介质 | |
US20230224501A1 (en) | Different atlas packings for volumetric video | |
JP2023506832A (ja) | 補助パッチを有する容積ビデオ | |
KR20220035229A (ko) | 볼류메트릭 비디오 콘텐츠를 전달하기 위한 방법 및 장치 | |
KR20210027483A (ko) | 3 자유도 및 볼류메트릭 호환 가능한 비디오 스트림을 인코딩 및 디코딩하기 위한 방법들 및 디바이스들 | |
CN115733576A (zh) | 点云媒体文件的封装与解封装方法、装置及存储介质 | |
CN115883871A (zh) | 媒体文件封装与解封装方法、装置、设备及存储介质 | |
RU2807582C2 (ru) | Способ, устройство и поток для формата объемного видео | |
CN115941995A (zh) | 媒体文件封装与解封装方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B350 | Update of information on the portal [chapter 15.35 patent gazette] |