BR112019010099A2 - costura de imagem orientada para conteúdo de imagem esférica - Google Patents

costura de imagem orientada para conteúdo de imagem esférica Download PDF

Info

Publication number
BR112019010099A2
BR112019010099A2 BR112019010099A BR112019010099A BR112019010099A2 BR 112019010099 A2 BR112019010099 A2 BR 112019010099A2 BR 112019010099 A BR112019010099 A BR 112019010099A BR 112019010099 A BR112019010099 A BR 112019010099A BR 112019010099 A2 BR112019010099 A2 BR 112019010099A2
Authority
BR
Brazil
Prior art keywords
images
orientation
display
gpu
camera device
Prior art date
Application number
BR112019010099A
Other languages
English (en)
Inventor
Forutanpour Bijan
Bi Ning
Hung Le Nguyen Phi
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of BR112019010099A2 publication Critical patent/BR112019010099A2/pt

Links

Classifications

    • G06T3/047
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • 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/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Abstract

as técnicas são descritas em relação à geração de conteúdo de imagem. uma unidade de processamento gráfico (gpu) é configurada para receber um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em um primeiro local, sendo que o primeiro dispositivo de câmera tem uma primeira orientação, renderizar a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação, receber um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em um segundo local diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação, e renderizar a exibição do segundo conjunto de imagens orientadas para a referência de orientação.

Description

COSTURA DE IMAGEM ORIENTADA PARA CONTEÚDO DE IMAGEM ESFÉRICA CAMPO DA TÉCNICA [0001] A revelação refere-se à renderização de imagem esférica. FUNDAMENTOS [0002] Em determinados tipos de renderização de imagens, como renderização de imagens de um video em 360 graus, um visualizador pode perceber várias visualizações diferentes do conteúdo de imagem. Por exemplo, embora um visualizador esteja visualizando o conteúdo de imagem em uma tela, o visualizador pode selecionar uma visualização diferente da mesma para visualizar o conteúdo.
SUMÁRIO [0003] Em geral, a revelação descreve técnicas para apresentação de conteúdo de imagem de dois dispositivos de câmera diferentes em uma referência de orientação comum. Dois dispositivos de câmera podem incluir, cada um, as respectivas câmeras olho-de-peixe, e cada dispositivo de câmera captura o respectivo conteúdo de imagem em 360 graus. Um visualizador pode visualizar o conteúdo de imagem capturada por um dos dispositivos de câmera e, então, mudar para o conteúdo de imagem capturada por outro dispositivo de câmera (por exemplo, como selecionado pelo visualizador ou um servidor que emite o conteúdo de imagem). Se o conteúdo de imagem apresentado a partir dos dispositivos de câmera diferentes não for orientado para uma referência de orientação comum, a transição de conteúdo de imagem a partir de um dispositivo de câmera para conteúdo de imagem de outra câmera pode
Petição 870190046314, de 17/05/2019, pág. 6/99
2/72 exigir a reorientação pelo visualizador (por exemplo, mudança de onde o visualizador está visualizando). Com a apresentação do conteúdo de imagem de dispositivos de câmera diferentes orientados em uma referência de orientação comum, a transição de conteúdo de imagem de dispositivos de câmera diferentes pode não precisar de reorientação pelo visualizador. Dessa forma, a transição na apresentação de conteúdo de imagem capturada de uma câmera para conteúdo de imagem capturada por outra câmera pode ser relativamente suave, proporcionando uma experiência mais imersiva e otimizada em comparação com exemplos em que um visualizador reorienta.
[0004] Em um exemplo, a revelação descreve um método para gerar conteúdo de imagem, sendo que o método compreende receber um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em um primeiro local, sendo que o primeiro dispositivo de câmera tem uma primeira orientação, renderizar a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação, receber um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em um segundo local diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação, e renderizar a exibição do segundo conjunto de imagens orientadas para a referência de orientação.
[0005] Em outro exemplo, a revelação descreve um dispositivo para gerar conteúdo de imagem, sendo que o dispositivo compreende um dispositivo de memória configurado para armazenar um primeiro conjunto de imagens
Petição 870190046314, de 17/05/2019, pág. 7/99
3/72 gerado a partir de um primeiro dispositivo de câmera em um primeiro local, sendo que o primeiro dispositivo de câmera tem uma primeira orientação, e armazenar um segundo conjunto de imagens diferente gerado a partir de um segundo dispositivo de câmera diferente em um segundo local diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação, e uma unidade de processamento gráfico (GPU) que compreende pelo menos um dentre um conjunto de circuitos de função fixa ou programável, a GPU configurada para receber o primeiro conjunto de imagens do dispositivo de memória, renderizar a exibição do primeiro conjunto de imagens orientado para uma referência de orientação, receber o segundo conjunto de imagens do dispositivo de memória, e renderizar a exibição do segundo conjunto de imagens orientado para a referência de orientação.
[0006] Em outro exemplo, a revelação descreve um meio de armazenamento legível por computador que tem instruções armazenadas no mesmo que quando executadas fazem com que um ou mais processadores recebam um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em um primeiro local, sendo que o primeiro dispositivo de câmera tem uma primeira orientação, renderizem a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação, recebam um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em um segundo local diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação
Petição 870190046314, de 17/05/2019, pág. 8/99
4/72 é diferente da primeira orientação, e renderizem a exibição do segundo conjunto de imagens orientadas para a referência de orientação.
[0007] Em outro exemplo, a revelação descreve um dispositivo para gerar conteúdo de imagem, sendo que o dispositivo compreende meios para receber um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em um primeiro local, sendo que o primeiro dispositivo de câmera tem uma primeira orientação, meios para renderizar a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação, meios para receber um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em um segundo local diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação, e meios para renderizar a exibição do segundo conjunto de imagens orientadas para a referência de orientação.
[0008] Os detalhes de um ou mais exemplos são apresentados nos desenhos em anexo e na descrição a seguir.
Outros recurso s, objetivos e vantagens se tornarão
evidentes a partir da descrição, desenhos, e
reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0009] A Figura 1 é um diagrama de blocos que
ilustra um sistema de capt ura de imagem de múltiplas
câmeras de acordo com uma ou mais técnicas descritas nesta revelação.
[0010] As Figuras 2A e 2B são diagramas
Petição 870190046314, de 17/05/2019, pág. 9/99
5/72 conceituais que ilustram um sistema de captura de imagem de múltiplas câmeras da Figura 1.
[0011] A Figura 3 é um diagrama de blocos que ilustra um exemplo de dispositivo de câmera para capturar um video ou imagem em 360 graus de acordo com uma ou mais técnicas descritas nesta revelação.
[0012] As Figuras 4A e 4B são diagramas pictóricos que ilustram imagens capturadas do dispositivo da Figura 3.
[0013] A Figura 5A é um diagrama pictórico que
ilustra uma imagem gerada sem orientação para uma
referência de orientação.
[0014] A Figura 5B é um diagrama pictórico que
ilustra uma imagem gerada com orientação para uma
referência de orientação.
[0015] As Figuras 6A e 6B são diagramas
pictóricos que ilustram imagens capturadas do dispositivo da Figura 1.
[0016] A Figura 6C é um diagrama pictórico que ilustra uma imagem gerada a partir de imagens das Figuras 6A e 6B orientadas com orientação para uma referência de orientação.
[0017] A Figura 7 é um diagrama de blocos de um dispositivo configurado para realizar uma ou mais técnicas descritas nesta revelação.
[0018] A Figura 8 é um diagrama de blocos que ilustra uma CPU, uma GPU e uma memória do dispositivo da Figura 7 em detalhes adicionais.
[0019] A Figura 9 é um fluxograma que ilustra um exemplo de método de operação de acordo com um ou mais
Petição 870190046314, de 17/05/2019, pág. 10/99
6/72 exemplos de técnicas descritos nesta revelação.
DESCRIÇÃO DETALHADA [0020] Os exemplos de técnicas descritos nesta revelação estão relacionados à apresentação de um vídeo ou imagem em 360 graus. Em um vídeo ou imagem em 360 graus, o conteúdo de vídeo/imagem forma uma esfera conceituai em torno do visualizador. O visualizador pode visualizar o conteúdo de imagem a partir de múltiplas perspectivas (por exemplo, na frente, atrás, acima e ao redor), e tal conteúdo de imagem é denominado uma imagem em 360 graus.
[0021] Nesta revelação, uma imagem que inclui conteúdo de imagem em 360 graus ou conteúdo visualizável significa que a imagem inclui conteúdo para todas as perspectivas (por exemplo, conteúdo acima, abaixo, atrás, na frente, e em cada lado). Por exemplo, as imagens convencionais capturam conteúdo de imagem ligeiramente em menos de 180 graus, e não capturam conteúdo nos lados da câmera.
[0022] Em geral, um vídeo em 360 graus é formado a partir de uma sequência de imagens em 360 graus. Consequentemente, os exemplos de técnicas descritos nesta revelação são descritos em relação à geração de imagens em 360 graus. Então, para conteúdo de vídeo em 360 graus, essas imagens em 360 graus podem ser sequencialmente exibidas. Em alguns exemplos, um usuário pode desejar capturar apenas uma imagem em 360 graus (por exemplo, como um instantâneo de todo o entorno de 360 graus do usuário), e as técnicas descritas nesta revelação também são aplicáveis a tais exemplos de casos.
[0023] As técnicas podem ser aplicáveis a
Petição 870190046314, de 17/05/2019, pág. 11/99
7/72 conteúdo de vídeo capturado, realidade virtual e, em geral, à exibição de vídeo e imagem. As técnicas podem ser usadas em dispositivos móveis, porém as técnicas não devem ser consideradas limitadas a aplicativos móveis. Em geral, as técnicas podem para aplicativos de realidade virtual, aplicativos de videogame ou outros aplicativos em que um ambiente de vídeo/imagem esférica em 360 graus é desejado.
[0024] O conteúdo de imagem em 360 graus pode ser capturado com um dispositivo de câmera que inclui uma pluralidade de lentes olho de peixe (por exemplo, posicionadas para capturar porções da esfera de conteúdo de imagem). As lentes olho de peixe capturam as respectivas porções da esfera completa do vídeo em 360 graus. As imagens geradas pelas porções capturadas podem ser imagens circulares (por exemplo, um quadro de imagem inclui uma pluralidade de imagens circulares a partir de respectivas lentes olho de peixe). O dispositivo de câmera que capturou as imagens, um dispositivo de processamento em que as imagens serão exibidas, ou algum outro dispositivo converte as imagens circulares em um tipo de imagem mais adequado para processamento e/ou transmissão de gráficos. O tipo de imagem mais adequado para processamento e/ou transmissão de gráficos é chamado de uma imagem de projeção, cujos exemplos incluem projeção equirretangular, projeção cúbica, projeção cilíndrica, projeção esférica, projeção quincunical de Peirce, etc.
[0025] Conforme descrito acima, um dispositivo de câmera inclui uma pluralidade de lentes olho de peixe. Alguns exemplos de dispositivos de câmera incluem duas lentes olho de peixe, porém os exemplos de técnicas não se
Petição 870190046314, de 17/05/2019, pág. 12/99
8/72 limitam a duas lentes olho de peixe. Um exemplo de dispositivo de câmera pode incluir 16 lentes (por exemplo, matriz de 16 câmeras para filmagem de conteúdo VR 3D) . Outro exemplo de dispositivo de câmera pode incluir oito lentes, cada uma com um ângulo de visão de 195 graus (por exemplo, cada lente captura 195 graus dos 360 graus de conteúdo de imagem) . Outros exemplos de dispositivos de câmera incluem três ou quatro lentes. Alguns exemplos podem incluir uma lente de 360 graus que captura 360 graus de conteúdo de imagem.
[0026] Os exemplos de técnicas descritos nesta revelação são geralmente descritos em relação a duas lentes olho de peixe que capturam uma imagem/video em 360 graus. Entretanto, os exemplos de técnicas não são tão limitados. Os exemplos de técnicas podem ser aplicáveis a exemplos de dispositivos de câmera que incluem uma única lente em 360 graus, uma pluralidade de lentes (por exemplo, duas ou mais) mesmo que as lentes não sejam lentes olho de peixe, e uma pluralidade de lentes olho de peixe.
[0027] Por exemplo, conforme descrito em mais detalhes, os exemplos de técnicas descrevem formas de criar uma transição perfeita na visualização de conteúdo capturado por um dispositivo de câmera para conteúdo capturado por outro dispositivo de câmera. Tais técnicas podem ser aplicáveis a uma ampla variedade de tipos de câmera diferentes, como aqueles descritos acima. Embora os exemplos de técnicas sejam descritos em relação a duas lentes olho de peixe, os exemplos de técnicas não são tão limitados, e aplicáveis aos vários tipos de câmera usados para capturar imagens/videos em 360 graus.
Petição 870190046314, de 17/05/2019, pág. 13/99
9/72 [0028] Em um ambiente de múltiplas câmeras, pode haver uma pluralidade desses exemplos de dispositivos de câmera situados em locais diferentes, cada um capturando o respectivo conteúdo de imagem. Um visualizador pode estar visualizando o conteúdo de imagem capturada por um dos dispositivos de câmera e, então, mudar para visualização de conteúdo de imagem de outro dispositivo de câmera. Em alguns casos, a mudança no conteúdo de imagem de um dispositivo de câmera para outro dispositivo de câmera pode ser chocante para o visualizador.
[0029] Com a geração da imagem de projeção, o dispositivo que gera a imagem de projeção (por exemplo, o dispositivo de câmera, servidor, ou dispositivo de processamento) pode orientar a imagem de projeção para uma orientação arbitrária, que pode ser diferente para cada um dos dispositivos de câmera. Por exemplo, em alguns casos, a orientação de um primeiro conjunto de imagens a partir de um primeiro dispositivo de câmera, e a orientação de um segundo conjunto de imagens a partir de um segundo dispositivo de câmera podem ser diferentes (por exemplo, as lentes do dispositivo de câmera usadas para gerar imagens no primeiro conjunto de imagens podem estar em uma primeira direção ou orientação, e as lentes do dispositivo de câmera usadas para gerar imagens no segundo conjunto de imagens podem estar em uma segunda direção ou orientação). Portanto, ao mudar de imagens capturadas de um dispositivo de câmera para outro dispositivo de câmera, é possível que o visualizador fique desorientado (por exemplo, a área de interesse não está mais diretamente na frente do visualizador, porém distante em algum outro ângulo). Após a
Petição 870190046314, de 17/05/2019, pág. 14/99
10/72 reorientação do visualizador (por exemplo, mover fisicamente a cabeça ou o corpo, reorientar a exibição ou controlar a interface para reorientar a imagem exibida), então, as imagens aparecem corretas, porém a necessidade de tal reorientação pode ser indesejável para o visualizador. [0030] Nos exemplos de técnicas descritos nesta revelação, o dispositivo que exibe as imagens de dispositivos de câmera diferentes pode apresentar as imagens de modo que as imagens de dispositivos de câmera diferentes tenham a mesma orientação ao longo de referências diferentes. Como um exemplo, cada dispositivo de câmera pode incluir um sensor (por exemplo, um magnetômetro ou bússola) que indica a direção de uma direção geográfica (por exemplo, Norte, Sul, Leste ou Oeste). Nesse exemplo, a direção geográfica é uma referência de orientação. Com a geração da imagem de projeção, o dispositivo que gera a imagem de projeção pode usar as informações de direção geográfica para orientar a imagem de projeção de modo que a direção geográfica esteja em um ponto de ajuste. Por exemplo, o dispositivo que gera a imagem de projeção pode orientar a imagem de modo que a direção Norte em relação ao dispositivo de câmera esteja no centro superior da imagem. Se o dispositivo que gera as imagens de projeção garantir que as imagens sejam sempre orientadas de modo que a direção Norte em relação aos respectivos dispositivos de câmera esteja no centro superior da imagem, então, mudar as imagens de uma câmera para outra pode não ser chocante ou exigir a reorientação do visualizador.
[0031] Se cada um dos dispositivos de câmera gerar as imagens de projeção, então, cada um dos
Petição 870190046314, de 17/05/2019, pág. 15/99
11/72 dispositivos de câmera pode ser configurado para orientar suas próprias imagens de projeção para uma referência de orientação comum. Embora seja possível, os dispositivos de câmera não precisam necessariamente se comunicar uns com os outros para orientar as imagens para uma referência de orientação comum, porém podem ser, cada um, configurados para orientar as imagens de projeção para uma referência de orientação especifica que é comum para cada dispositivo de câmera.
[0032] Se o servidor ou o dispositivo de processamento que apresenta as imagens em 360 graus gerar as imagens de projeção, então, o servidor ou o dispositivo de processamento pode receber informações indicativos da referência de orientação a partir de respectivos dispositivos de câmera para os respectivos conjuntos de imagens. Por exemplo, o servidor ou o dispositivo de processamento pode receber informações de um primeiro dispositivo de câmera indicando a direção Norte em relação a um primeiro conjunto de imagens do primeiro dispositivo de câmera, receber informações de um segundo dispositivo de câmera indicando a direção Norte em relação a um segundo conjunto de imagens do segundo dispositivo de câmera, e assim por diante. O servidor ou o dispositivo de processamento pode, então, ajustar (por exemplo, deslocar, girar, cortar ou distorcer) o primeiro e segundo conjuntos de imagens com base nas informações indicativas da referência de orientação de modo que as imagens sejam orientadas para a mesma referência de orientação (por exemplo, Norte está no mesmo local em cada conjunto de imagens).
Petição 870190046314, de 17/05/2019, pág. 16/99
12/72 [0033] Nos exemplos de técnicas, o servidor ou ο dispositivo de processamento pode orientar imagens de dispositivos de câmera diferentes comuns para um plano (por exemplo, a direção do Norte). Por exemplo, o servidor ou dispositivo de processamento orienta as imagens de dispositivos de câmera diferentes para um azimute comum. Em alguns exemplos, o servidor ou o dispositivo de processamento pode orientar as imagens de dispositivos de câmera diferentes para outros planos comuns. Por exemplo, o servidor ou dispositivo de processamento pode orientar as imagens de dispositivos de câmera diferentes para uma inclinação comum (por exemplo, referência de altitude comum).
[0034] A orientação de imagens para uma
inclinação comum pode permitir que o visualizador não
incline os olhos para cima ou para baixo ao faze r a
transição para um dispositivo de câmera diferente. Por exemplo, pode ser possível que duas imagens de projeção sejam naturalmente formadas de modo que o Norte esteja na direção superior. Entretanto, a inclinação das imagens pode ser diferente. Como um exemplo, a parte superior das imagens parece mais perto e a parte inferior das imagens parece mais distante, ou vice-versa, em imagens de um dispositivo de câmera em comparação com imagens de outro dispositivo de câmera. Com a orientação para uma inclinação comum (por exemplo, altitude), o visualizador pode não precisar reorientar a inclinação durante a transição de um dispositivo de câmera para outro dispositivo de câmera.
[0035] Em alguns exemplos, o servidor ou o dispositivo de processamento pode orientar as imagens de
Petição 870190046314, de 17/05/2019, pág. 17/99
13/72 dispositivos de câmera diferentes para um ângulo de rotação comum ao longo de um eixo óptico. Por exemplo, há um eixo óptico para cada lente em cada dispositivo de câmera, em que o eixo óptico é um eixo hipotético que se estende para fora do centro da lente. Devido às orientações diferentes dos dispositivos de câmera, o eixo óptico de cada uma das lentes ópticas pode não ser orientado para uma referência comum.
[0036] Com ângulos de rotação diferentes ao longo de um eixo óptico pode resultar em extremidade direita de imagens mais perto e extremidade esquerda de imagens mais distante, ou vice-versa, em imagens de um dispositivo de câmera em comparação com imagens de outro dispositivo de câmera. Com a orientação para um ângulo de rotação comum, o visualizador pode não experimentar tais mudanças na transição de imagens renderizadas de um dispositivo de câmera para outro dispositivo de câmera.
[0037] Dessa forma, o servidor ou o dispositivo de processamento pode orientar imagens para uma referência comum com base em azimute (por exemplo, direção), altitude (por exemplo, inclinação) e rotação. Deve-se compreender que o servidor ou dispositivo de processamento pode orientar imagens com base em uma ou mais dentre a direção, inclinação e rotação. Por exemplo, o servidor ou o dispositivo de processamento pode orientar as imagens com base em uma primeira referência de orientação (por exemplo, uma dentre a direção, inclinação ou rotação), uma primeira referência de orientação e uma segunda referência de orientação (por exemplo, outra dentre a direção, inclinação ou rotação), ou uma primeira referência de orientação, uma
Petição 870190046314, de 17/05/2019, pág. 18/99
14/72 segunda referência de orientação e uma terceira referência
de orientação (por exemplo, direção, inclinação e
rotação).
[0038] Nos exemplos acima, o exemplo de
referências de orientação foi baseado em posições globais das orientações dos dispositivos de câmera. Em alguns exemplos, além de ou em vez das referências de orientação acima, o servidor ou o dispositivo de processamento orienta as imagens de câmeras diferentes com base em conteúdo de cena e/ou olhar do visualizador. Por exemplo, a referência de orientação pode ser selecionada com base na cena, olhar (por exemplo, posição dos olhos) , ou posição da cabeça do visualizador. Como um exemplo, a referência comum pode ser porções comuns no conteúdo de imagem em imagens capturadas por um dispositivo de câmera e imagens capturadas por outro dispositivo de câmera para o qual o visualizador está transitando. Como outro exemplo, a referência comum pode ser áreas em que o visualizador está olhando (por exemplo, com base na posição dos olhos ou da cabeça do visualizador). Em tais exemplos, o servidor ou o dispositivo de processamento pode orientar imagens de câmeras diferentes de modo que o visualizador possa manter a mesma posição dos olhos ou da cabeça. Por exemplo, o servidor ou o dispositivo de processamento pode selecionar a referência de orientação com base na posição dos olhos ou da cabeça do visualizador.
[0039] A Figura 1 é um diagrama de blocos que ilustra um sistema de captura de imagem de múltiplas câmeras de acordo com uma ou mais técnicas descritas nesta revelação. Por exemplo, a Figura 1 ilustra um sistema de
Petição 870190046314, de 17/05/2019, pág. 19/99
15/72 captura de imagem de múltiplas câmeras 10 que inclui uma pluralidade de dispositivos de câmera 12A a 12N (coletivamente chamados de dispositivos de câmera 12) . O exemplo ilustrado na Figura 1 pode ser aplicável a casos em que múltiplos equipamentos de câmera para gravação cooperativa são úteis.
[0040] Os dispositivos de câmera 12 podem ser dispositivos de câmera independentes posicionados em locais diferentes em um cenário. Por exemplo, durante um casamento, os dispositivos de câmera 12 podem ser posicionados em vários locais em tripés durante todo o casamento. Como outro exemplo, para capturar imagens diferentes para uma visita à casa, os dispositivos de câmera 12 podem ser posicionados em locais diferentes em toda a casa. Os dispositivos de câmera 12 não precisam necessariamente permanecer imóveis no cenário, e também podem ser móveis.
[0041] Os dispositivos de câmera 12 podem ser configurados para gravar um ambiente esférico em 360 graus para otimizar a experiência do visualizador. Ao contrário de câmeras padrão que capturam uma imagem apenas daquilo que está na frente da lente da câmera, os dispositivos de câmera 12 podem ser configurados para capturar uma área muito maior, incluindo conteúdo de imagem em todas as direções. Como ilustrado, cada um dos dispositivos de câmera 12 captura o conteúdo de imagem 14A a 14N (coletivamente conteúdos de imagem 14), respectivamente. Embora não ilustrado, pode haver uma sobreposição entre os conteúdos de imagem 14.
[0042] Cada um dos dispositivos de câmera 12 pode
Petição 870190046314, de 17/05/2019, pág. 20/99
16/72 transmitir seus respectivos conteúdos de imagem capturadas 14 ao servidor 16. 0 servidor 16 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que possa armazenar conteúdos de imagem 14 capturados por dispositivos de câmera 12. 0 dispositivo de processamento 18 pode acessar o conteúdo de imagem capturada armazenado 14 do servidor 16 através de streaming ou download. 0 servidor 16 pode ser qualquer tipo de servidor capaz de armazenar e transmitir conteúdos de imagem 14 ao dispositivo de processamento 18. Exemplos de servidores de arquivo incluem um servidor da web (por exemplo, para um site da web) , um servidor FTP, dispositivos de armazenamento conectado à rede (NAS), ou uma unidade de disco local.
[0043] Os dispositivos de câmera 12 e o dispositivo de processamento 18 podem transmitir dados e receber dados do servidor 16 de várias maneiras. Como um exemplo, os dispositivos de câmera 12 podem capturar os respectivos conteúdos de imagem 14 e armazenar os conteúdos de imagem 14 localmente. Ao final do evento, um técnico (por exemplo, técnico da empresa de fotografia de casamento ou técnico do agente de vendas de casa) pode baixar conteúdos de imagem 14 através de uma conexão com fio a um dispositivo de computação (não ilustrado), e carregar os
conteúdos de imagem 14 através de canal sem fio (por
exemplo, uma conexão Wi-Fi) ou conexão com fio (por
exemplo, DSL, modem a cabo, etc.), ou uma combinação de
ambos. Como outro exemplo, os dispositivos de câmera 12 podem transmitir por meio de conexão com fio ou sem fio conteúdos de imagem 14 ao servidor 16. O dispositivo de
Petição 870190046314, de 17/05/2019, pág. 21/99
17/72 processamento 18 pode baixar conteúdos de imagem 14 do servidor 16 através de uma conexão sem fio ou com fio. 0 dispositivo de processamento 18 e os dispositivos de câmera 12 podem se comunicar com o servidor 16 através de qualquer conexão de dados, incluindo uma conexão com a Internet.
[0044] Em alguns exemplos, o servidor 16 pode receber conteúdos de imagem capturadas 14 em tempo real, e o dispositivo de processamento 18 pode baixar os conteúdos de imagem capturadas 14 em tempo real, como de um evento esportivo ou um concerto. Outras permutações e combinações são possíveis, e as técnicas descritas nesta revelação não devem ser consideradas limitadas a qualquer um desses exemplos específicos.
[0045] O servidor 16 pode receber conteúdos de imagem capturadas 14 em vários formatos. Como um exemplo, o servidor 16 pode receber conteúdos de imagem capturadas 14 em seu formato de imagem capturada. Conforme descrito em mais detalhe abaixo, os dispositivos de câmera 12 incluem lentes que capturam os conteúdos de imagem em 360 graus 14, um exemplo de lentes usadas para capturar os conteúdos de imagem em 360 grau 14 são lentes olho de peixe, porém outros tipos de lentes são possíveis. Para facilidade de descrição, os exemplos são descritos em relação a lentes olho de peixe.
[0046] O formato de imagem capturada pode ser imagens circulares resultantes dos conteúdos de imagem 14 capturada pelas lentes olho de peixe, para outros exemplos em que as lentes olho de peixe não são usadas, o formato de imagem pode ser diferente de imagens circulares. Em alguns exemplos, o servidor 16 pode receber conteúdos de imagem
Petição 870190046314, de 17/05/2019, pág. 22/99
18/72 capturada 14 em um formato em que as imagens capturadas são adicionalmente processadas. Por exemplo, os dispositivos de câmera 12 podem incluir uma unidade de processamento gráfico (GPU) que processa as imagens para gerar uma imagem de projeção, em que a imagem de projeção é alguma forma de mistura das imagens em uma única imagem que é, então, mapeada em uma estrutura bidimensional ou tridimensional. A mesclagem refere-se, em geral, à mistura de valores de cores de imagens que se sobrepõem. Os dispositivos de câmera 12 podem transmitir as respectivas imagens de projeção ao servidor 16, em que cada imagem de projeção dos respectivos dispositivos de câmera 12 inclui os respectivos conteúdos de imagem 14.
[0047] O dispositivo de processamento 18 recebe as imagens do servidor 16 em exemplos em que o servidor 16 armazena as imagens recebidas de dispositivos de câmera 12 e/ou recebe as imagens de projeção do servidor 16 em exemplos em que o servidor 16 armazena as imagens de projeção. O dispositivo de processamento 18 pode executar o processamento adicional nas imagens recebidas (por exemplo, imagens circulares e/ou imagens de projeção), e apresentar as imagens resultantes para exibição a um visualizador.
[0048] Em alguns exemplos, o dispositivo de processamento 18 pode estar apresentando um conjunto de imagens a partir de um dos dispositivos de câmera 12 (por exemplo, dispositivo de câmera 12A). Por exemplo, supõe-se que o dispositivo de câmera 12A seja colocado em um corredor em uma casa. Neste exemplo, o visualizador é capaz de visualizar todo o conteúdo de imagem 14 A. Por exemplo, o visualizador pode interagir com o dispositivo de
Petição 870190046314, de 17/05/2019, pág. 23/99
19/72 processamento 18 de modo que o visualizador possa mudar o ângulo de visualização e visualizar o conteúdo de imagem 14A a partir de qualquer ângulo de visualização.
[0049] O visualizador pode, então, interagir com o dispositivo de processamento 18 de modo que o visualizador perceba que o visualizador está navegando através de conteúdo de imagem 14A em direção a um dos conteúdos de imagem 14B a 14N. Por exemplo, se o dispositivo de câmera 12A estiver no corredor, o dispositivo de câmera 12B pode estar na porta de um quarto. Nesse exemplo, o visualizador pode interagir com o dispositivo de processamento 18 de modo que o visualizador perceba que o visualizador está andando pelo corredor e em direção à porta. À medida que o visualizador se aproxima do dispositivo de câmera 12B, o dispositivo de processamento 18 pode mudar da apresentação de conteúdo de imagem 14A para o conteúdo de imagem 14B.
[0050] Por exemplo, o servidor 16 pode carregar imagens ou imagens de projeção de conteúdo de imagem 14A no dispositivo de processamento 18 com base na localização percebida do visualizador dentro do ambiente capturado por dispositivos de câmera 12. Por exemplo, o dispositivo de processamento 18 pode enviar informações para o servidor 16 indicando a localização relativa do visualizador. Com base na localização relativa, o servidor 16 pode enviar as imagens de um dos conteúdos de imagem 14 para o dispositivo de processamento 18. Como outro exemplo, o servidor 16 pode difundir uma pluralidade de conteúdos de imagem 14 (incluindo possivelmente todos os conteúdos de imagem 14) e incluir informações de áreas cobertas pelos respectivos
Petição 870190046314, de 17/05/2019, pág. 24/99
20/72 conteúdos de imagem 14. Em tais exemplos, o dispositivo de processamento 18 pode determinar qual dos conteúdos de imagem 14 apresentar ao visualizador. Outras formas de o servidor 16 e/ou dispositivo de processamento 18 determinar qual dos conteúdos de imagem 14 transmitir/apresentar são possíveis.
[0051] Em alguns casos, cada um dos dispositivos de câmera 12 pode gerar as respectivas imagens de projeção sem haver uma referência de orientação comum através de dispositivos de câmera 12. Por exemplo, cada um dos dispositivos de câmera 12 pode gerar sua imagem de projeção com base nos ângulos de suas lentes. Devido ao fato de que as lentes de cada um dos dispositivos de câmera 12 poder estar em ângulos diferentes, não há referência de orientação comum nas imagens de projeção. Por exemplo, as lentes de dispositivos de câmera 12 podem estar voltadas para direções diferentes ou ter orientações diferentes e, portanto, as lentes de cada um dos dispositivos de câmera 12 podem estar em ângulos diferentes.
[0052] Em exemplos em que os dispositivos de câmera 12 transmitem as imagens, e o servidor 16 gera as imagens de projeção, o servidor 16 pode gerar de modo similar as imagens de projeção com base em ângulos das lentes, de modo que não haja referência de orientação comum nas imagens de projeção. De modo similar, em exemplos em que o dispositivo de processamento 18 recebe imagens que ainda não foram convertidas em imagens de projeção (por exemplo, imagens circulares de lentes olho de peixe), o dispositivo de processamento 18 pode gerar as imagens de projeção com base em ângulos de lentes (por exemplo, em
Petição 870190046314, de 17/05/2019, pág. 25/99
21/72 relação a uma referência fixa), de modo que não haja referência de orientação comum nas imagens de projeção.
[0053] Um possível problema com a falta de uma referência de orientação comum nas imagens de projeção diferentes é que a mudança de um dos conteúdos de imagem 14 a partir de dispositivos de câmera 12 para outro conteúdo de imagem 14 a partir de outros dispositivos de câmera 12 pode ser uma experiência chocante para o usuário. Por exemplo, independentemente de qual dispositivo gerou as imagens de projeção, o dispositivo de processamento 18 renderiza as imagens de projeção a partir de um dos conteúdos de imagem 14 (por exemplo, conteúdo de imagem 14A) para exibição. Enquanto está apresentando o conteúdo de imagem 14A, o visualizador pode orientar inicialmente o conteúdo de imagem 14A no dispositivo de processamento 18 de modo que o conteúdo seja corretamente apresentado (por exemplo, como alguém normalmente percebería o conteúdo, com foco na área de interesse). Então, quando o dispositivo de processamento 18 mudar do conteúdo de imagem 14A para o conteúdo de imagem 14B, o conteúdo de imagem 14B pode não parecer correto, mas desorientado. Isso se deve ao fato de que não há orientação comum nas imagens de projeção de conteúdo de imagem 14A e conteúdo de imagem 14B resultando em uma mudança na orientação quando o dispositivo de processamento 18 mudar de um dos conteúdos de imagem 14 para outro dos conteúdos de imagem 14.
[0054] Por exemplo, os dispositivos de câmera 12 capturam e gravam um campo de visão em 360 graus horizontalmente (e verticalmente em alguns casos), e não há senso de direção de gravação. Isso resulta na orientação
Petição 870190046314, de 17/05/2019, pág. 26/99
22/72 do visualizador na esfera de visualização em 360 graus.
[0055] Esta revelação descreve exemplos de técnicas para apresentação de imagem a partir de dispositivos de câmera diferentes 12 localizados em locais diferentes orientados para uma mesma referência de orientação. Com essa orientação comum, quando o dispositivo de processamento 18 mudar da apresentação de um dos conteúdos de imagem 14 para outro dos conteúdos de imagem 14, o visualizador pode não precisar de reorientação.
[0056] Uma forma exemplificativa para orientar as imagens de projeção é cada dispositivo de câmera 12 orientar suas imagens de projeção com base em uma referência de orientação que é igual para todos os dispositivos de câmera 12. Por exemplo, uma direção geográfica (por exemplo, Norte, Sul, Leste, Oeste) será igual para todos os dispositivos de câmera 12 independentemente de seus ângulos d lente específicos (por exemplo, iguais de como a lente está apontando). Em alguns exemplos, os dispositivos de câmera 12 podem ser configurados para orientar suas respectivas imagens de projeção de modo que uma direção geográfica esteja localizada no mesmo ponto de coordenada em cada uma das imagens de projeção. Por exemplo, cada um dos dispositivos de câmera 12 pode gerar suas respectivas imagens de projeção de modo que o Norte verdadeiro (por exemplo, o Polo Norte) esteja localizado no mesmo ponto de coordenada (por exemplo, o conteúdo que está localizado no Norte verdadeiro está localizado no centro superior da imagem de projeção) .
[0057] Deve ser reiterado que cada um dos
Petição 870190046314, de 17/05/2019, pág. 27/99
23/72 dispositivos de câmera 12 está capturando conteúdos de imagem em 360 graus 14. Portanto, em cada uma das imagens circulares há um conteúdo que está situado diretamente ao Norte em relação aos dispositivos de câmera 12. De outro modo, um indivíduo que está segurando o dispositivo de câmera 12A pode tirar um instantâneo. Devido ao fato de o instantâneo ser de toda a área visível em 360 graus, há uma garantia de que o conteúdo do Norte verdadeiro seja capturado. Portanto, em pelo menos uma das imagens circulares, há conteúdo de Norte verdadeiro. Com a geração da imagem de projeção com base nas imagens circulares, cada um dos dispositivos de câmera 12 pode gerar a imagem de projeção de modo que na imagem de projeção, o conteúdo de Norte verdadeiro está situado no centro superior da imagem de projeção. Nesse exemplo, as imagens de projeção de dispositivos de câmera 12 são, cada uma, orientadas para uma referência de orientação, que está centralizando a imagem de projeção para Norte verdadeiro. A centralizando da imagem de projeção para uma direção como Norte verdadeiro é um exemplo, e as técnicas não são tão limitadas.
[0058] Para permitir que cada um dos dispositivos de câmera 12 gere as imagens de projeção com tal referência de orientação comum, os dispositivos de câmera 12 podem incluir sensores para gerar informações da referência de orientação. Por exemplo, os dispositivos de câmera 12 podem incluir magnetômetros (também chamados de bússolas) que podem indicar uma direção geográfica. Os dispositivos de câmera 12 podem usar a direção da direção geográfica especifica para ajustar as imagens de projeção de modo que
Petição 870190046314, de 17/05/2019, pág. 28/99
24/72 uma direção geográfica específica seja alinhada no mesmo ponto de coordenada em cada uma das imagens de projeção. Então, quando o dispositivo de processamento 18 renderizar a exibição das imagens de projeção, pode não haver a necessidade de reorientação do visualizador ao mudar os conteúdos de imagem 14.
[0059] O uso de uma bússola e uma direção geográfica especifico é um exemplo, de não deve ser considerado limitador. Em alguns exemplos, os dispositivos de câmera 12 podem incluir uma unidade de medida inercial (IMU) e/ou giroscópio como uma maneira de fornecer uma referência de orientação comum. Em alguns exemplos, os dispositivos de câmera 12 podem usar uma bússola, IMU e/ou giroscópio. Por exemplo, os dispositivos de câmera 12 podem usar a bússola para orientação para uma direção geográfica especifica, e pode usar a IMU e/ou giroscópio para controlar a orientação em uma outra dimensão (por exemplo, orientar a inclinação para uma referência de orientação comum, etc.).
[0060] A orientação de imagens de projeção para uma direção especifica (por exemplo, em que o Norte está situado no centro superior em cada imagem) é um exemplo de orientação de imagens a partir de dispositivos de câmera diferentes 12 para uma referência de azimute comum. A orientação de imagens de projeção para uma inclinação especifica é um exemplo de orientação de imagens a partir de dispositivos de câmera diferentes 12 para uma referência de altitude comum. Pode haver outros exemplos de orientação de imagens.
[0061] Como um exemplo, cada um dos dispositivos
Petição 870190046314, de 17/05/2019, pág. 29/99
25/72 de câmera 12 está associado a um eixo óptico, que é um eixo hipotético que se estende para fora de um centro das lentes de dispositivos de câmera 12. Devido ao posicionamento de dispositivos de câmera 12, as imagens de dispositivos de câmera 12 podem não ser orientadas para um ângulo de rotação comum ao longo do eixo óptico. Em alguns exemplos, os dispositivos de câmera 12 podem incluir uma ou mais FMUs e/ou giroscópios. Uma das FMUs e/ou giroscópios pode ser usada para determinar a inclinação. Outra das FMUs e/ou giroscópios pode ser usada para determinar o ângulo de rotação (por exemplo, uma quantidade pela qual os respectivos dispositivos de câmera 12 são deslocados em relação a um eixo óptico).
[0062] A orientação de imagens de projeção ao longo de uma referência direcional, referência de inclinação o referência de ângulo de rotação são vários exemplos de referências de orientação. As técnicas descritas nesta revelação podem orientar as imagens de projeção em relação a um ou mais desses exemplos de referências de orientação (por exemplo, uma referência de orientação, algumas das referências de orientação ou todas as referências de orientação) .
[0063] A orientação de imagens de projeção a partir de dispositivos de câmera diferentes 12 para uma referência de orientação comum que baseia-se na direção ou orientação de dispositivos de câmera 12 é um exemplo de orientação de imagens de projeção a partir de dispositivos de câmera diferentes 12 para uma orientação comum. Entretanto, os exemplos descritos nesta revelação podem ser aplicáveis para outros tipos de referências de orientação,
Petição 870190046314, de 17/05/2019, pág. 30/99
26/72 como referências de orientação baseadas em abordagens baseadas em visão de computador como conteúdo de cena e posição dos olhos e/ou cabeça do visualizador.
[0064] Como um exemplo, um visualizador pode estar visualizando um conteúdo de cena especifico (por exemplo, uma área de interesse) de imagens a partir de um primeiro dos dispositivos de câmera 12 (por exemplo, dispositivo de câmera 12A). Pode haver alguma sobreposição no conteúdo de cena em imagens de outro dos dispositivos de câmera 12 (por exemplo, dispositivo de câmera 12B). Em tais exemplos, o dispositivo de processamento 18 pode renderizar imagens do dispositivo de câmera 12B de modo que o conteúdo de cena comum para imagens de dispositivo de câmera 12A e imagens de dispositivo de câmera 12B esteja sendo exibido substancialmente em um mesmo local. Por exemplo, o dispositivo de processamento 18 pode renderizar o conteúdo de cena comum para ambas as imagens de dispositivo de câmera 12A e imagens de dispositivo de câmera 12B de modo que o conteúdo de cena comum seja exibido nas imagens renderizadas de dispositivo de câmera 12B no mesmo local que o local do conteúdo de cena comum nas imagens renderizadas de dispositivo de câmera 12A.
[0065] Como uma ilustração, no exemplo em que os dispositivos de câmera 12 são colocados em uma residência para uma visita pela casa, o dispositivo de câmera 12A pode ser colocado em um corredor e o dispositivo de câmera 12B pode ser colocado em um quarto. À medida que o visualizador interage com o dispositivo de processamento 18 de modo que o visualizador esteja andando pelo corredor e voltado para a porta no quarto, o dispositivo de processamento 18 pode
Petição 870190046314, de 17/05/2019, pág. 31/99
27/72 estar exibindo o conteúdo de imagem capturada pelo dispositivo de câmera 12A. Então, quando o visualizador interage para entrar no quarto, o dispositivo de processamento 18 pode exibir o conteúdo de imagem capturada pelo dispositivo de câmera 12B. Neste exemplo, o conteúdo de imagem capturada pelo dispositivo de câmera 12A, que o visualizador inicialmente visualiza quando está voltado para a porta pode se sobrepor ao conteúdo de imagem capturada pelo dispositivo de câmera 12B (por exemplo, o dispositivo de câmera 12B também pode capturar o conteúdo de imagem na porta do quarto) . 0 dispositivo de processamento 18 pode renderizar, no caso da transição a partir de conteúdo de imagem capturada pelo dispositivo de câmera 12A para conteúdo de imagem capturada pelo dispositivo de câmera 12B, o conteúdo de imagem capturada pelo dispositivo de câmera 12B para uma orientação comum como aquela das imagens renderizadas do conteúdo de imagem capturada pelo dispositivo de câmera 12A, que nesse exemplo é um conteúdo de cena comum. Com a orientação para conteúdo de cena comum, o visualizador pode perceber uma transição mais suave.
[0066] Como outro exemplo, um visualizador pode estar visualizando um conteúdo de cena especifico (por exemplo, uma área de interesse) focando seus olhos ou sua cabeça em um ângulo especifico quando estiver visualizando o conteúdo de imagem capturada por um primeiro dos dispositivos de câmera 12 (por exemplo, dispositivo de câmera 12A) . Quando ocorre a transição do conteúdo de imagem capturada pelos dispositivos de câmera 12A para um segundo dos dispositivos de câmera 12 (por exemplo,
Petição 870190046314, de 17/05/2019, pág. 32/99
28/72 dispositivo de câmera 12B), o dispositivo de processamento 18 pode renderizar o conteúdo de imagem capturada pelo dispositivo de câmera 12B com base em uma posição dos olhos ou da cabeça do visualizador quando o visualizador estiver visualizando as imagens capturadas pelo dispositivo de câmera 12A. Por exemplo, o dispositivo de processamento 18 pode renderizar o conteúdo de imagem capturada pelo dispositivo de câmera 12B de modo que o visualizador não precise mudar a posição dos olhos ou da cabeça. Por exemplo, o conteúdo de imagem que é uma área de interesse do visualizador, com base na posição dos olhos ou da cabeça do visualizador, é preservado no mesmo local ao fazer a transição do conteúdo de imagem capturada por um primeiro dos dispositivos de câmera 12 para um segundo dos dispositivos de câmera 12. Neste exemplo, o dispositivo de processamento 18 pode selecionar a referência de orientação
com base na posição dos olhos ou da cabeça do
visualizador.
[0067] Nos exemplos acima, os dispositivos de
câmera 12 geraram as imagens de projeção. Entretanto, as técnicas não são tão limitadas. Em exemplos em que o servidor 16, o dispositivo de processamento 18, ou algum outro dispositivo gera as imagens de projeção, os dispositivos de câmera 12 podem transmitir informações indicando o alinhamento de uma dimensão e/ou inclinação e/ou ângulo de rotação especifico (no exemplo de IMU ou giroscópio) ao servidor 16, o dispositivo de processamento 18 ou esse outro dispositivo, juntamente com as imagens circulares. 0 servidor 16, o dispositivo de processamento 18, ou possivelmente esse outro dispositivo pode realizar
Petição 870190046314, de 17/05/2019, pág. 33/99
29/72 as técnicas exemplificativas descritas acima para orientar as imagens de projeção para uma referência de orientação comum.
[0068] As Figuras 2A e 2B são diagramas conceituais que ilustram um sistema de captura de imagem de múltiplas câmeras da Figura 1. Como a Figura 1, as Figuras 2A e 2B ilustram exemplos em que um dos dispositivos de câmera 12 captura os respectivos conteúdos de imagem 14. Ao contrário da Figura 1, os conteúdos de imagem 14 são ilustrados como sobrepostos. Como um exemplo, o conteúdo de imagem 14A, 14C e 14E se sobrepõe.
[0069] Na Figura 2A, os dispositivos de câmera 12A são ilustrados em orientações diferentes. Portanto, um visualizador que muda a visualização de imagens geradas de um dos dispositivos de câmera 12 para outro dos dispositivos de câmera pode precisar se reorientar para a orientação em que o um dos dispositivos de câmera 12 para o qual o visualizador está mudando.
[0070] A Figura 2B fornece uma ilustração conceituai do resultado eficaz das técnicas descritas nesta revelação. Embora a Figura 2B ilustre dispositivos de câmera 12 que têm, cada um, a mesma orientação, deve-se compreender que nem todos os dispositivos de câmera 12 precisam ser orientados na mesma direção. Ao invés disso, a Figura 2B está ilustrando que quando as técnicas descritas nesta revelação forem implementadas, o resultado pode ser que as imagens capturadas de dispositivos de câmera diferentes 12 são todas orientadas para uma referência comum.
[0071] Por exemplo, em um ambiente de múltiplas
Petição 870190046314, de 17/05/2019, pág. 34/99
30/72 câmeras, as imagens geradas pelos dispositivos de câmera 12 podem depender de sua orientação física de dispositivos de câmera 12. Ao transitar de conteúdos de imagem 14 de respectivos dispositivos de câmera 12, o visualizador pode experimentar um efeito desorientador. As técnicas descritas nesta revelação podem resultar na geração de imagens em 360 graus de modo que haja uma transição confortável ao mudar os dispositivos de câmera 12. Por exemplo, o resultado pode ser similar se todos os dispositivos de câmera 12 forem orientados para uma referência comum, como conceitualmente ilustrado na Figura 2B.
[0072] A Figura 3 é um diagrama de blocos que ilustra um exemplo de dispositivo de câmera para capturar um vídeo em 360 graus de acordo com uma ou mais técnicas descritas nesta revelação. Conforme ilustrado, o dispositivo de câmera 12A é um dispositivo de captura de vídeo que inclui lente olho de peixe 20A e a lente olho de peixe 20B localizada em lados opostos do dispositivo de câmera 12A para capturar um vídeo/imagem completa em 360 graus. Outras orientações de lente olho de peixe 20A e 20B podem ser possíveis. Por exemplo, o dispositivo de câmera 12A pode incluir mais de duas lentes olho de peixe, ou uma única lente de 360 graus. Também, as lentes olho de peixe são fornecidas meramente como um exemplo, e outros tipos de lentes são possíveis.
[0073] Um exemplo de dispositivo de câmera 12A pode incluir 16 lentes (por exemplo, matriz de 16 câmeras para filmagem de conteúdo VR 3D). Outro exemplo de dispositivo de câmera 12A pode incluir oito lentes, cada uma com um ângulo de visão de 195 graus (por exemplo, cada
Petição 870190046314, de 17/05/2019, pág. 35/99
31/72 lente captura 195 graus dos 360 graus de conteúdo de imagem) . Outro exemplo de dispositivo de câmera 12A inclui três ou quatro lentes. Alguns exemplos podem incluir uma lente de 360 graus que captura 360 graus de conteúdo de imagem.
[0074] Os exemplos de técnicas descritos nesta revelação são geralmente descritos em relação a dispositivos de câmera 12A incluem duas lentes olho de peixe que capturam uma imagem/video em 360 graus. Entretanto, os exemplos de técnicas não são tão limitados. Os exemplos de técnicas podem ser aplicáveis a exemplos de dispositivo de câmera 12A que incluem uma única lente em 360 graus, uma pluralidade de lentes (por exemplo, duas ou mais) mesmo que as lentes não sejam lentes olho de peixe, e uma pluralidade de lentes olho de peixe.
[0075] Conforme descrito acima, o conteúdo de vídeo em 360 graus pode ser considerado como uma sequência de imagens em 360 graus (por exemplo, quadros do vídeo). Os exemplos de técnicas descritos nesta revelação descrevem técnicas relacionadas às imagens, que podem ser usadas com propósitos de imagens estáticas (por exemplo, um instantâneo em 360 graus) ou para imagens que formam um vídeo (por exemplo, um vídeo em 360 graus) . [0076] Um usuário pode interagir com o dispositivo de câmera 12A para capturar o vídeo/imagem em 360 graus, em que cada uma das lentes olho de peixe 20A e 20B captura uma porção do vídeo/imagem em 360 graus e os dois fluxos de vídeo/imagem da lente olho de peixe 20A e 20B são mesclados para criar o vídeo/imagem em 360 graus.
[0077] Pode haver várias formas em que um usuário
Petição 870190046314, de 17/05/2019, pág. 36/99
32/72 interage com o dispositivo de câmera 12A. Como um exemplo, o usuário pode interagir com o dispositivo de câmera 12A com um botão de pressionamento localizado no dispositivo de câmera 12A. Como outro exemplo, um usuário pode interagir com o dispositivo de câmera 12A através de uma interface exibida (por exemplo, interface gráfica de usuário (GUI)).
[0078] Em alguns exemplos, o dispositivo de câmera 12A pode não fornecer exibição. Ao invés disso, o dispositivo de câmera 12A envia a imagem capturada que é então exibida em outro dispositivo (por exemplo, dispositivo de processamento 18).
[0079] Conforme ilustrado, o dispositivo de câmera 12A inclui o processador de câmera 22, unidade de processamento gráfico (GPU) 24, um ou mais sensores 26 e transmissores 28. Embora os vários componentes sejam ilustrados como componentes separados, em alguns exemplos, os componentes podem ser combinados para formar um sistema em chip (SoC). Como um exemplo, o processador de câmera 22 e a GPU 24 podem ser formados em um chip de circuito integrado comum (IC), ou em chips IC separados. Várias outras permutações e combinações são possíveis, e as técnicas não devem ser consideradas limitadas ao exemplo ilustrado na Figura 3. O processador de câmera 22 e a GPU 24 podem ser formados como conjunto de circuitos funcionais fixos e/ou programáveis como em um ou mais microprocessadores, circuitos integrados para aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), processadores de sinal digital (DSPs), ou outro conjunto de circuitos lógicos integrados ou distintos equivalentes.
Petição 870190046314, de 17/05/2019, pág. 37/99
33/72 [0080] Embora o dispositivo de câmera 12A seja ilustrado na Figura 3, os dispositivos de câmera 12B a 12N podem incluir componentes similares. Também, o dispositivo de câmera 12A não precisa necessariamente incluir a GPU 24 em todos os exemplos. Por exemplo, em exemplos em que o dispositivo de câmera 12A transmite as imagens circulares capturadas pelas lentes olho de peixe 20A e 20B, o dispositivo de câmera 12A pode não incluir a GPU 24. Entretanto, pode ser possível que o dispositivo de câmera 12A inclua a GPU 24 mesmo em exemplos em que o dispositivo de câmera 12A transmite as imagens circulares.
[0081] O transmissor 28 pode ser configurado para transmitir dados de imagem capturada pelo dispositivo de câmera 12A. Por exemplo, o transmissor 28 pode incluir o conjunto de circuitos para transmitir, por meio de conexão sem fio ou com fio, imagens circulares e/ou imagens de projeção ao servidor 16, para outro dispositivo de computação, ou dispositivo de processamento 18.
[0082] O processador de câmera 22 é configurado para receber as correntes elétricas como sinais de sensor dos respectivos pixels de lente 20A e 20B e processar as correntes elétricas para gerar dados de pixel, por exemplo, dados R, G, B, dados de luma e croma, ou similares, de respectivas imagens olho de peixe (por exemplo, imagens circulares como aquelas ilustradas nas Figuras 4A e 4B) . Embora um processador de câmera 22 seja descrito, em alguns exemplos, pode haver uma pluralidade de processadores de câmera (por exemplo, um para a lente 20A e um para a lente 20B) .
[0083] Em alguns exemplos, o processador de
Petição 870190046314, de 17/05/2019, pág. 38/99
34/72 câmera 22 pode ser configurado como uma arquitetura de única entrada e múltiplos dados (SIMD). 0 processador de câmera 22 pode realizar as mesmas operações na corrente recebida de cada um dos pixels em cada lente 20A e 20B. Cada linha da arquitetura SIMD pode incluir um pipeline de imagem. 0 pipeline de imagem inclui um conjunto de circuitos de hardwire e/ou conjunto de circuitos programáveis para processar a saída dos pixels.
[0084] Por exemplo, cada pipeline de imagem de processador de câmera 22 pode incluir os respectivos amplificadores de transimpedância (TIAs) para converter a corrente em uma tensão e respectivos conversores analógicodigital (ADCs) que convertem a saída de tensão analógica em um valor digital. A corrente emitida por cada pixel indica a intensidade de um componente vermelho, verde ou azul.
[0085] Além de converter as saídas de corrente analógica em valores digitais, o processador de câmera 22 pode executar algum pós-processamento adicional para aumentar a qualidade da imagem final. Por exemplo, o processador de câmera 22 pode avaliar os dados de cor e brilho de pixels de imagem adjacentes e realizar a demosaicização para atualizar a cor e o brilho do pixel de imagem. O processador de câmera 22 também pode realizar a
redução de ruído e nitidez de imagem, como exemplos
adicionais. [0086] o processador de câmera 22 envia as
imagens resultantes (por exemplo, valores de pixel para
cada pixel de imagem) para a GPU 24 processar. Por exemplo, a GPU 24 pode mesclar os valores de pixel para gerar uma imagem de projeção. Para facilidade de descrição, os
Petição 870190046314, de 17/05/2019, pág. 39/99
35/72 exemplos são descritos em relação à GPU 24 que realiza as operações. Entretanto, o processador de câmera 22 ou uma GPU no dispositivo de processamento 18, servidor 16, ou algum outro dispositivo pode ser configurado para mesclar as imagens capturadas.
[0087] As Figuras 4A e 4B são diagramas pictóricos que ilustram uma imagem capturada do dispositivo da Figura 3. Conforme ilustrado, a saída das duas imagens capturadas pelas lentes 20A e 20B são imagens circulares (por exemplo, imagens arredondadas). Por exemplo, a Figura 4A representa a imagem capturada pelas lentes 20A, e a Figura 4B representa a imagem capturada pela lente 20B. O processador de câmera 22 recebe o conteúdo de imagem capturada pela lente 20A e 20B e processa o conteúdo de imagem para gerar as Figuras 4A e 4B. Em alguns exemplos, as Figuras 4A e 4B podem fazer parte de um quadro de imagem comum. [0088] Conforme ilustrado, as Figuras 4A e 4B são imagens circulares que ilustram o conteúdo de imagem que aparece como uma bolha. Se as duas imagens circulares forem costuradas, o conteúdo de imagem resultante poderia ser para a esfera inteira de conteúdo de imagem (por exemplo, conteúdo visualizável em 360 graus).
[0089] Novamente com referência à Figura 3, a GPU 24 pode ser configurada para gerar imagens de projeção a partir das imagens circulares geradas pelo processador de câmera 22. Exemplos das imagens de projeção incluem equirretangular, cúbica, cilíndrica, esférica, quincunical de Peirce, etc. Para gerar as imagens de projeção, a GPU 24 pode realizar o mapeamento de textura de cada imagem circular (por exemplo, cada uma das imagens ilustradas nas
Petição 870190046314, de 17/05/2019, pág. 40/99
36/72
Figuras 4A e 4B) em uma projeção (por exemplo, projeção equirretangular, projeção cúbica, projeção cilíndrica, projeção esférica ou projeção quincunical de Peirce).
[0090] Por exemplo, para uma projeção equirretangular, há uma estrutura retangular bidimensional. A GPU 24 tira um pixel de uma imagem circular e mapeia os valores de pixel desse pixel em um local na estrutura retangular. A GPU 24 repete essas etapas para cada pixel na imagem circular, e mapeia aquele pixel para a estrutura retangular, em um processo chamado de mapeamento de textura. A imagem circular é considerada uma textura de cor, e os pixels da imagem circular são chamados de texels no mapeamento de textura.
[0091] O resultado do mapeamento de textura de uma primeira imagem circular para uma primeira estrutura retangular é uma primeira imagem intermediária. A GPU 24 pode repetir esse processo, porém em relação a uma segunda imagem circular para gerar uma segunda imagem intermediária (por exemplo, mapeamento de textura da segunda imagem circular para uma estrutura retangular) . A GPU 24 pode, então, costurar as duas imagens intermediárias para gerar a imagem de projeção. Como um exemplo, um circuito misturador de GPU 24 pode mesclar os valores de pixel de pixels em uma borda inferior da primeira imagem intermediária com pixels em uma borda superior da segunda imagem intermediária, resultando em uma imagem equirretangular.
[0092] A GPU 24 pode repetir essas operações para uma pluralidade de imagens circulares capturadas pelas lentes 20A e 20B para gerar um conjunto de imagens (por exemplo, um conjunto de imagens equirretangulares). Neste
Petição 870190046314, de 17/05/2019, pág. 41/99
37/72 exemplo, o conjunto de imagens eguirretangulares inclui o conteúdo de conteúdo de imagem 14A.
[0093] Para quincunical de Peirce, a GPU 24 pode realizar operações similares. Por exemplo, para quincunical de Peirce, também pode haver uma estrutura retangular bidimensional para a qual a GPU 24 realiza o mapeamento de textura das imagens circulares. Entretanto, o local na estrutura bidimensional para o qual a GPU 24 podería mapear um pixel de uma imagem circular para imagens quincunicais de Peirce é diferente do local da estrutura bidimensional para o qual a GPU 24 podería mapear um pixel de uma imagem circular para imagens eguirretangulares. Para as projeções cúbicas, cilíndricas e esféricas, a GPU 24 pode executar operações similares, porém realiza o mapeamento de textura em uma estrutura tridimensional (por exemplo, cubo, cilindro ou esfera).
[0094] Conforme descrito acima, um possível problema pode ser que cada uma das imagens de projeção (por exemplo, imagens eguirretangulares ou quincunicais de Peirce) de dispositivos de câmera diferentes 12 pode não ser orientada para uma mesma referência de orientação (por exemplo, posicionai em relação ao azimute, amplitude ou ângulo de rotação ou posição de cena ou olhos/cabeça do visualizador). Então, quando o dispositivo de processamento 18 comutar entre conteúdos de imagem 14 (por exemplo, conteúdos de imagem 14A a 14B), o visualizador pode precisar se reorientar de modo que o conteúdo de imagem 14B seja orientado da mesma forma que o conteúdo de imagem 14A foi orientado.
[0095] Nos exemplos descritos nesta revelação, o
Petição 870190046314, de 17/05/2019, pág. 42/99
38/72 dispositivo de câmera 12A inclui um ou mais sensores 26 (por exemplo, magnetômetro, unidade de medida de inércia (IMU) ou giroscópio) para orientar as imagens de projeção para uma referência de orientação comum. Os outros dispositivos de câmera 12 podem incluir um ou mais sensores similares 26.
[0096] Como um exemplo, após a GPU 24 gerar a imagem de projeção, a GPU 24 pode receber informações indicando o alinhamento de uma direção geográfica específica. A GPU 24 pode, então, ajustar a imagem de projeção de modo que o alinhamento de direção geográfica sirva para um ponto de coordenada específico na imagem de projeção.
[0097] Em geral, a GPU 24 pode deslocar, girar, cortar ou distorcer a imagem de projeção para ajustar a imagem de projeção ao alinhamento da direção geográfica específica. Por exemplo, para girar a imagem de projeção em 90 graus, a GPU 24 pode ajustar o valor de coordenada x de um pixel na imagem de projeção à coordenada y na imagem de projeção ajustada, e ajustar o valor de coordenada y de um pixel na imagem de projeção à coordenada x na imagem de projeção ajustada.
[0098] Como outro exemplo, a GPU 24 pode realizar outra passagem de mapeamento de textura. Nessa passagem de mapeamento de textura, a imagem de projeção forma a textura, e a GPU 24 realiza o mapeamento de textura de um pixel a partir da imagem de projeção em uma estrutura que tem um formato similar à imagem de projeção, porém em locais diferentes nessa estrutura (por exemplo, desloca cada pixel da imagem de projeção em 45 graus sobre essa
Petição 870190046314, de 17/05/2019, pág. 43/99
39/72 estrutura para gerar uma imagem de projeção ajustada que é girada em 45 graus).
[0099] Outras formas para ajustar a imagem de projeção são possíveis e as técnicas acima não devem ser consideradas limitadoras. Por exemplo, em vez de gerar a imagem de projeção e, então, ajustar a imagem de projeção, a GPU 24 pode realizar o mapeamento de textura dos pixels das imagens circulares para seus locais corretos finais de modo que a imagem de projeção seja orientada para uma referência de orientação comum (por exemplo, alinhada com base em uma direção geográfica) como parte do mapeamento de textura).
[0100] Para projeções equirretangulares e cilíndricas, a GPU 24 pode realizar o deslocamento horizontal de pixels com envolvimento para se alinhar à referência de orientação comum. Uma transformação esférica e rotação também podem ser realizados pela GPU 24. Para a projeção cúbica, a GPU 24 pode usar as informações de um ou mais sensores 26 para renderizar os seis lados do cubo. Para a quincunical de Peirce, a GPU 24 pode integrar as informações de um ou mais sensores 26 na fórmula de Peirce/Pierpont descrita em Elucidating Peirce Quincuncial Projection por Puentes et al., cujos conteúdos estão incorporados no presente documento a título de referência em sua totalidade.
[0101] A Figura 5A é um diagrama pictórico que ilustra uma imagem gerada sem orientação para uma referência de orientação. Por exemplo, a Figura 5A ilustra um exemplo em que a GPU 24 gerou uma imagem equirretangular com base no ângulo de lentes 20A e 20B. Se cada um dos
Petição 870190046314, de 17/05/2019, pág. 44/99
40/72 dispositivos de câmera 12 gerar imagens equirretangulares similares, então, a mudança de um dos conteúdos de imagem 14 para outro dos conteúdos de imagem 14 pode resultar na necessidade de reorientação do visualizador dentro do volume de visualização em 360 graus exibido.
[0102] A Figura 5B é um diagrama pictórico que ilustra uma imagem gerada com orientação para uma referência de orientação. Na Figura 5B, a GPU 24 ajustou a imagem de projeção ilustrada na Figura 5A de modo que a coordenada de centro superior na imagem de projeção ajustada seja alinhada ao Norte. Com base nas medições de um ou mais sensores 26, a GPU 24 pode determinar onde ao Norte está situada na imagem de projeção ilustrada na Figura 5A. A GPU 24 pode, então, ajustar a imagem de projeção da Figura 5A de modo que o Norte esteja alinhado à coordenada de centro superior, conforme ilustrado na Figura 5B.
[0103] Em alguns exemplos, o alinhamento a uma direção geográfica pode fornecer um primeiro nivel de ajuste (por exemplo, em uma primeira dimensão) . A GPU 24 pode realizar um segundo nivel de ajuste na imagem de projeção ajustada para gerar outra imagem de projeção ajustada. Um ou mais sensores 26 podem incluir um giroscópio ou uma IMU. A GPU 24 pode usar as informações geradas do giroscópio ou da IMU para ajustar ainda mais a inclinação para uma referência de orientação comum. Também, um ou mais sensores 26 podem ser usados para ajustar ainda mais o ângulo de rotação para uma referência de orientação comum.
[0104] As Figuras 6A e 6B são diagramas
Petição 870190046314, de 17/05/2019, pág. 45/99
41/72 pictóricos que ilustram imagens capturadas do dispositivo da Figura 1. Por exemplo, as Figuras 6A e 6B são similares àqueles das Figuras 4A e 4B, porém com conteúdo diferente. A Figura 6C é um diagrama pictórico que ilustra uma imagem gerada a partir de imagens das Figuras 6 A e 6B orientadas com orientação para uma referência de orientação. Por exemplo, a Figura 6C ilustra um exemplo de uma imagem de projeção quincunical de Peirce. Nesse exemplo, em vez de alinhar o Norte ao centro superior da imagem de projeção, a GPU 24 pode alinhar o Norte ao canto superior direito da imagem de projeção.
[0105] Embora os exemplos acima sejam descritos em relação à GPU 24 de dispositivo de câmera 12A que realiza as técnicas exemplificativas, os aspectos desta revelação não são tão limitados. Por exemplo, o transmissor 28 pode transmitir dados de imagem para imagens circulares (por exemplo, imagens como aquelas das Figuras 4A, 4B, 6A e 6B) ao servidor 16, algum outro dispositivo de computação, ou dispositivo de processamento 18. Além disso, o transmissor 28 pode enviar informações direcionais de saída, informações de inclinação e/ou informações de ângulo de rotação para esses outros dispositivos. Uma GPU nesses outros dispositivos pode, então, gerar uma imagem de projeção que é orientada para uma referência de orientação, como aquela ilustrada nas Figuras 5B e 6C e, então, transmitir a mesma de volta para algum outro dispositivo, como um exemplo.
[0106] A Figura 7 é um diagrama de blocos de de um dispositivo de processamento da Figura 1 configurado para realizar uma ou mais técnicas descritas nesta
Petição 870190046314, de 17/05/2019, pág. 46/99
42/72 revelação. Exemplos de dispositivo de processamento 18 da Figura 7 incluem computador pessoal, um computador desktop, um laptop, um tablet, uma estação de trabalho de computador, uma plataforma ou console de videogame, um dispositivo de comunicação sem fio (como, por exemplo, um telefone móvel, um telefone celular, um telefone por satélite e/ou um aparelho de telefone móvel), um telefone fixo, um telefone via Internet, um dispositivo de mão como um dispositivo portátil de videogame ou um assistente digital pessoal (PDA), um reprodutor de música pessoal, um reprodutor de video, um dispositivo de exibição, uma câmera, uma televisão, um decodificador de sinais de televisão, um servidor, um dispositivo de rede intermediário, um computador mainframe ou qualquer outro tipo de dispositivo que processe e/ou exiba dados gráficos.
[0107] Conforme ilustrado no exemplo da Figura 7, o dispositivo de processamento 18 inclui um transceptor 30, rastreador de posicionamento 31, unidade de processamento central (CPU) 32, uma unidade de processamento gráfico (GPU) 34 e memória local 36 de GPU 34, interface de usuário 38, controlador de memória 40 que fornece acesso à memória de sistema 46, e processador de exibição 42 que envia sinais que fazem com que os dados gráficos sejam exibidos na tela 44.
[0108] Também, embora os vários componentes sejam ilustrados como componentes separados, em alguns exemplos, os componentes podem ser combinados para formar um sistema em chip (SoC) . Como um exemplo, a CPU 32, a GPU 34 e o processador de exibição 42 podem ser formados em um chip de
Petição 870190046314, de 17/05/2019, pág. 47/99
43/72 circuito integrado comum (IC) . Em alguns exemplos, um ou mais dentre a CPU 32, a GPU 34 e o processador de exibição 42 podem estar em chips IC separados. Várias outras permutações e combinações são possíveis, e as técnicas não devem ser consideradas limitadas ao exemplo ilustrado na Figura 7.
[0109] Os vários componentes ilustrados na Figura 7 (sejam formados em um dispositivo ou em dispositivos diferentes) podem ser formados como um conjunto de circuitos de função fixa e/ou programável, ou uma combinação de tal conjunto de circuitos, como em um ou mais microprocessadores, circuitos integrados para aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), processadores de sinal digital (DSPs), ou outro conjunto de circuitos lógicos integrados ou distintos equivalentes. Exemplos de memória local 36 incluem uma ou mais memórias voláteis ou não-voláteis ou dispositivos de armazenamento, como, por exemplo, memória de acesso aleatório (RAM), RAM estática (SRAM), RAM dinâmica (DRAM), ROM programável e apagável (EPROM) , ROM programável eletricamente apagável (EEPROM), memória flash, um meio de dados magnéticos ou um meio de armazenamento óptico.
[0110] As várias unidades ilustradas na Figura 7 se comunicam usando o barramento 47. O barramento 47 pode ser qualquer um dentre uma variedade de estruturas de barramento, como um barramento de terceira geração (por exemplo, um barramento Hyper Transport ou um barramento InfiniBand), um barramento de segunda geração (por exemplo, um barramento Advanced Graphics Port, um barramento Peripheral Component Interconnect (PCI) Express ou urn
Petição 870190046314, de 17/05/2019, pág. 48/99
44/72 barramento Advanced eXensible Interface (AXI) ou outro tipo de barramento ou interconexão de . Deve ser entendido que a configuração especifica de barramentos e interfaces de comunicação entre os componentes diferentes mostrados na Figura 7 é meramente exemplificativa, e outras configurações de dispositivos de computação e/ou outros sistemas de processamento de imagens com componentes iguais ou diferentes podem ser usadas para implementar as técnicas desta revelação.
[0111] A CPU 32 pode compreender um processador de uso geral ou de uso especial que controla a operação do dispositivo de processamento 18. Um usuário pode fornecer a entrada no dispositivo de processamento 18 para fazer com que a CPU 32 execute um ou mais aplicativos de software. Os aplicativos de software que são executados na CPU 32 podem incluir, por exemplo, um aplicativo de processador de texto, um aplicativo de navegador da web, um aplicativo de e-mail, um aplicativo de visualização de fotos, um aplicativo de edição de fotos, um aplicativo de edição de gráficos, um aplicativo de planilha, um aplicativo de reprodutor de mídia, um aplicativo de videogame, um aplicativo de interface gráfica do usuário ou outro programa. O usuário pode fornecer a entrada no dispositivo de processamento 18 através de um ou mais dispositivos de entrada (não mostrados) como um teclado, um mouse, um microfone, um touchpad ou outro dispositivo de entrada que seja acoplado ao dispositivo de processamento 18 através de interface de entrada de usuário 38.
[0112] Um exemplo do aplicativo de software é o aplicativo de visualização. A CPU 32 executa o aplicativo
Petição 870190046314, de 17/05/2019, pág. 49/99
45/72 de visualização para visualizar conteúdos de imagem 14 capturada pelos dispositivos de câmera 12. Por exemplo, em resposta à execução do aplicativo de visualização, a CPU 32 pode enviar um comando para o transceptor 30 recuperar as imagens circulares, imagens de projeção, ou ambas do servidor 16 ou dispositivos de câmera 12. O transceptor 30 pode formar uma conexão sem fio ou com fio com o servidor 16 em resposta e baixar as imagens circulares e/ou imagens de projeção para conteúdos de imagem 14 do servidor 16.
[0113] Em alguns exemplos, a CPU 32 pode fazer com que o transceptor 30 baixe imagens circulares e/ou imagens de projeção de um dos conteúdos de imagem específicos 14. Em alguns exemplos, a CPU 32 pode fazer com que o transceptor 30 baixe imagens circulares e/ou imagens de projeção de uma pluralidade ou todos os conteúdos de imagem 14. Em resposta, o transceptor 30 pode baixar as imagens circulares e/ou imagens de projeção dos conteúdos de imagem instruídos 14, e armazenar as imagens circulares e/ou imagens de projeção como conjuntos de imagens de respectivos dispositivos de câmera 12 na memória de sistema 46 através do controlador de memória 40.
[0114] O aplicativo de visualização que é executado na CPU 32 pode incluir uma ou mais instruções de renderização de gráficos que instruem a CPU 32 a fazer com que a renderização de dados gráficos seja exibida 44. Em alguns exemplos, as instruções do aplicativo de visualização podem se adaptar a uma interface de programação de aplicativos gráficos (API), como, por exemplo, uma API Open Graphics Library (OpenGL®), uma API Open Graphics Library Embedded Systems (OpenGL ES), uma API
Petição 870190046314, de 17/05/2019, pág. 50/99
46/72
OpenCL, uma API Direct3D, uma API X3D, uma API RenderMan, uma API WebGL, ou qualquer outra API gráfica padrão pública ou proprietária. As técnicas não devem ser consideradas limitadas à necessidade de uma API especifica.
[0115] Como um exemplo, o usuário pode executar o aplicativo de visualização para que o transceptor baixe as imagens circulares e/ou imagens de projeção para armazenamento na memória de sistema 46. Após o armazenamento, o aplicativo de visualização pode fazer com que a CPU 32 instrua a GPU 34 a renderizar a exibição das imagens circulares e/ou imagens de projeção. O aplicativo de visualização pode usar as instruções de software que se adaptam a um exemplo de API, como a API OpenGL, para instruir a GPU 34 para renderizar a exibição das imagens (por exemplo, imagens circulares e/ou imagens de projeção).
[0116] Em resposta às instruções recebidas, a GPU 34 pode receber o conteúdo de imagem das imagens circulares e/ou imagens de projeção e renderizar as imagens para gerar o video em 360 graus. A tela 44 exibe o video em 360 graus. O usuário pode interagir com a interface de usuário 38 para modificar a perspectiva de visualização de modo que o visualizador possa visualizar o video completo em 360 graus (por exemplo, visualização acima, atrás, na frente, e todos os ângulos da esfera em 360).
[0117] O visualizador também pode interagir com a interface de usuário 38 para se mover através do volume de visualização do video em 360 graus. Por exemplo, o visualizador pode interagir com a interface de usuário 38 para se mover para a frente, para trás, para a esquerda,
Petição 870190046314, de 17/05/2019, pág. 51/99
47/72 para a direita, para cima ou para baixo no volume de visualização do video em 360 graus. Como um exemplo, no ambiente residencial, o visualizador pode perceber como se o mesmo estivesse se movendo por um corredor da casa. No ambiente de casamento, o visualizador pode perceber como se o mesmo estivesse se movendo de uma mesa para outra mesa na recepção.
[0118] O controlador de memória 40 facilita a transferência de dados que entram e saem da memória de sistema 46. Por exemplo, o controlador de memória 40 pode receber comandos de leitura e gravação de memória, e executar tais comandos em relação à memória 46, para fornecer serviços de memória para os componentes no .dispositivo de processamento 18. O controlador de memória 40 está comunicativamente acoplado à memória de sistema 46. Embora o controlador de memória 40 seja ilustrado no exemplo do dispositivo de processamento 18 da Figura 7 como um circuito de processamento que é separado tanto da CPU 32 como da memória de sistema 46, em outros exemplos, alguma ou toda a funcionalidade de controlador de memória 40 pode ser implementada em uma ou tanto na CPU 32 como na memória de sistema 46.
[0119] A memória de sistema 46 pode armazenar módulos de programa e/ou instruções e/ou dados que são acessíveis pela CPU 32 e GPU 34. Por exemplo, a memória de sistema 46 pode armazenar aplicativos de usuário (por exemplo, instruções para o aplicativo de visualização), imagens resultantes de dispositivos de câmera 12, etc. A memória de sistema 46 pode armazenar adicionalmente informações para uso por e/ou geradas por outros
Petição 870190046314, de 17/05/2019, pág. 52/99
48/72 componentes do dispositivo de processamento 18. A memória de sistema 46 pode incluir uma ou mais memórias voláteis ou não-voláteis ou dispositivos de armazenamento, como, por exemplo, memória de acesso aleatório (RAM), RAM estática (SRAM), RAM dinâmica (DRAM), memória de leitura (ROM), ROM programável e apagável (EPROM), ROM programável eletricamente apagável (EEPROM), memória flash, um meio de dados magnéticos ou um meio de armazenamento óptico.
[0120] Em alguns aspectos, a memória de sistema 46 pode incluir instruções que fazem com que a CPU 32 e a GPU 34, e o processador de exibição 42 realizem as funções atribuídas a esses componentes nesta revelação. Consequentemente, a memória de sistema 46 pode ser um meio de armazenamento legível por computador que tem instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores (por exemplo, CPU 32, GPU 34, e processador de exibição 42) realizem várias funções.
[0121] Em alguns exemplos, a memória de sistema 46 é um mídia de armazenamento não temporário. O termo não temporário indica que o meio de armazenamento não é incorporado em uma onda portadora ou um sinal propagado. Entretanto, o termo não temporário não deve ser interpretado para significar que a memória de sistema 46 é não móvel ou que seus conteúdos são estáticos. Como um exemplo, a memória de sistema 4 6 pode ser removida do dispositivo 18, e movida para outro dispositivo. Como outro exemplo, a memória, substancialmente similar à memória de sistema 46, pode ser inserida no dispositivo 18. Em determinados exemplos, um meio de armazenamento não temporário pode armazenar dados que podem, ao longo do
Petição 870190046314, de 17/05/2019, pág. 53/99
49/72 tempo, mudar (por exemplo, na RAM).
[0122] A CPU 32 e a GPU 34 podem armazenar dados de imagem, e similares nos respectivos buffers que estão alocados dentro da memória de sistema 46. O processador de exibição 42 pode recuperar os dados da memória de sistema 46 e configurar a tela 44 para exibir a imagem representada pelos dados de imagem gerados. Em alguns exemplos, o processador de exibição 42 pode incluir um conversor digital para analógico (DAC) que é configurado para converter os valores digitais recuperados da memória de sistema 46 em um sinal analógico consumivel pela tela 44. Em outros exemplos, o processador de exibição 42 pode passar os valores digitais diretamente para a tela 44 para processamento.
[0123] A tela 44 pode incluir um monitor, uma televisão, um dispositivo de projeção, uma tela de cristal liquido (LCD), um painel de plasma, uma matriz de diodo emissor de luz (LED) como uma tela de diodo emissor de luz orgânico (OLED), uma tela de tubo de raios catódicos (CRT), papel eletrônico, uma tela de emitida por elétrons de condução de superfície (SED), uma tela de televisão a laser, uma tela de nanocristal ou outro tipo de unidade de exibição. A tela 44 pode ser integrada ao dispositivo de processamento 18. Por exemplo, A tela 44 pode ser uma tela de um aparelho de telefone celular ou de um tablet. Alternativamente, a tela 44 pode ser um dispositivo independente acoplado ao dispositivo de processamento 18 através de um link de comunicação com ou sem fio. Por exemplo, a tela 44 pode ser um monitor de computador ou tela plana conectada a um computador pessoal através de um
Petição 870190046314, de 17/05/2019, pág. 54/99
50/72 cabo ou link sem fio.
[0124] Em exemplos em que o dispositivo de processamento 18 recebe imagens circulares, a GPU 34 pode ser configurada para gerar as imagens de projeção com base em operações similares como aquelas descritas acima em relação à GPU 24. Por exemplo, a GPU 34 pode realizar o mapeamento de textura das imagens circulares para gerar uma imagem de projeção equirretangular ou uma imagem de projeção quincuncial de Peirce, e operações similares para as imagens de projeção cúbicas, cilíndricas ou esféricas.
[0125] Por exemplo, a GPU 34 pode receber (por exemplo, da memória de sistema 46) um primeiro conjunto de imagens geradas a partir do dispositivo de câmera 12A que está em um primeiro local. Esse primeiro conjunto de imagens pode ser imagens circulares e/ou imagens de projeção. Em exemplos em que o primeiro conjunto de imagens consiste em imagens circulares, a GPU 34 pode realizar operações similares àquelas descritas acima em relação à GPU 24 para gerar as imagens de projeção, e armazenar as imagens de projeção na memória de sistema 46. Além disso, a GPU 34 pode receber informações geradas a partir de um ou mais sensores 26. Os dispositivos de câmera 12 podem transmitir informações coletadas a partir de um ou mais sensores 26 ao servidor 16, do qual o transceptor 30 recebe as informações coletadas para armazenamento na memória do sistema 46, e a GPU 34 recebe as informações coletadas da memória do sistema 46. A GPU 34 pode usar as informações coletadas de um ou mais sensores 26 para ajustar a orientação da imagem de projeção.
[0126] Em alguns exemplos, o rastreador de
Petição 870190046314, de 17/05/2019, pág. 55/99
51/72 posição 31 pode ser configurado para rastrear a posição dos olhos do visualizador (por exemplo, olhar) ou cabeça, e enviar informações de saida indicativas da posição dos olhos ou da cabeça do visualizador para a CPU 32. Por sua vez, a CPU 32, fornece instruções para a GPU 34 renderizar os conteúdos de imagem 14, pode fornecer informações indicando a posição dos olhos ou da cabeça do visualizador. Com a renderização do conteúdo de imagem 14B, a GPU 34 pode posicionar o conteúdo de imagem 14B de modo que o visualizador não mude a posição dos seus olhos ou da sua cabeça. Por exemplo, ao fazer a transição de um primeiro conjunto de imagens renderizadas de conteúdo de imagem 14A capturada pelo dispositivo de câmera 12A para um segundo conjunto de imagens de conteúdo de imagem 14B capturada pelos dispositivos de câmera 12B, a GPU 34 pode renderizar o segundo conjunto de imagens para uma referência comum (por exemplo, a posição dos olhos ou da cabeça do visualizador) como o primeiro conjunto de imagens renderizadas.
[0127] Em alguns exemplos, a CPU 32 pode determinar a comunalidade entre o conteúdo de imagem 14A e o conteúdo de imagem 14B. A CPU 32 pode instruir a GPU 34 a renderizar o conteúdo de imagem 14B de modo que o conteúdo comum seja exibido no mesmo local na tela 44. Por exemplo, para renderizar o conteúdo de imagem 14B, a CPU 32 pode instruir a GPU 34 a renderizar o conteúdo de cena comum tanto ao conteúdo de imagem 14A em um primeiro conjunto de imagens tanto ao conteúdo de imagem 14A em um segundo conjunto de imagens de modo que o conteúdo de cena comum seja exibido no segundo conjunto de imagens renderizadas de
Petição 870190046314, de 17/05/2019, pág. 56/99
52/72 conteúdo de imagem 14B no mesmo local que o local do conteúdo de cena comum no primeiro conjunto de imagens renderizadas do conteúdo de imagem 14A. Dessa forma, ao fazer a transição de um primeiro conjunto de imagens renderizadas de conteúdo de imagem 14A capturada pelo dispositivo de câmera 12A para um segundo conjunto de imagens de conteúdo de imagem 14B capturada pelos dispositivos de câmera 12B, a GPU 34 pode renderizar o segundo conjunto de imagens para uma referência comum (por exemplo, cena comum) como o primeiro conjunto de imagens renderizadas.
[0128] Em exemplos em que o primeiro conjunto de imagens são imagens de projeção, as imagens de projeção já podem ter sido orientadas para a referência de orientação. Nesses casos, a GPU 34 pode não precisar de ajuste adicional. Entretanto, em exemplos, o primeiro conjunto de imagens pode ser a imagem de projeção, porém a imagem de projeção pode não ter sido orientada para a referência de orientação. Em tais exemplos, a GPU 34 pode ajustar a orientação das imagens de projeção à referência de orientação comum.
[0129] De modo similar, a GPU 34 pode receber (por exemplo, da memória de sistema 46) um segundo conjunto de imagens diferentes geradas a partir do dispositivo de câmera 12B que está em um segundo local diferente. Esse segundo conjunto de imagens pode ser imagens circulares e/ou imagens de projeção. A GPU 34 pode realizar operações similares conforme descrito acima em relação ao primeiro conjunto de imagens para gerar imagens de projeção com a referência de orientação (por exemplo, a mesma orientação
Petição 870190046314, de 17/05/2019, pág. 57/99
53/72 que a referência de orientação para o primeiro conjunto de imagens renderizadas).
[0130] A GPU 34 pode não ajustar a orientação para o primeiro conjunto de imagens e o segundo conjunto de imagens ao mesmo tempo; embora tal ajuste paralelo de orientação seja possível. A CPU 32 pode instruir a GPU 34 que um dos conteúdos de imagem 14 deve ser renderizado para exibição. Como um exemplo, a CPU 32 pode instruir a GPU 34 que as imagens circulares e/ou imagens de projeção de conteúdo de imagem 14A capturada pelo dispositivo de câmera 12A devem ser renderizadas para exibição. Neste exemplo, a GPU 34 pode ajustar a orientação do primeiro conjunto de imagens (se necessário) à referência de orientação.
[0131] Então, quando a CPU 32 instruir a GPU 34 que as imagens circulares e/ou imagens de projeção de conteúdo de imagem 14B capturadas pelo dispositivo de câmera 12B devem ser renderizadas para exibição , a GPU 34 pode ajustar a orientação do segundo conjunto de imagens (se necessário) para a referência de orientação (por exemplo, mesma referência de orientação que o primeiro conjunto de imagens renderizadas). Por exemplo, a GPU 34 pode ajustar a orientação do primeiro conjunto de imagens de modo que o primeiro conjunto de imagens renderizadas tenha uma referência de orientação, e ajustar a orientação do segundo conjunto de imagens de modo que o segundo conjunto de imagens renderizadas tenha a referência de orientação (por exemplo, a mesma referência de orientação que o primeiro conjunto de imagens renderizadas). Conforme descrito acima, a GPU 34 pode não precisar ajustar a orientação do primeiro e do segundo conjuntos de imagens
Petição 870190046314, de 17/05/2019, pág. 58/99
54/72 como nos casos em que as imagens de projeção recebidas de conteúdo de imagem 14A e 14B já foram orientadas para a
referência de orientação comum (por exemplo, pelos
dispositivos de câmera 12A outro dispositivo). e 12B, servidor 16, ou algum
[0132] Em qualquer evento, uma vez que a memória
de sistema 46 armazena as imagens de projeção do primeiro conjunto de imagens, a GPU 34 pode renderizar a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação. Então, quando a GPU 34 mudar para o segundo conjunto de imagens (por exemplo, porque o visualizador interagiu com a interface de usuário 38 para entrar na área coberta por conteúdos de imagem 14B), a GPU 34 pode renderizar a exibição do segundo conjunto de imagens orientado para a referência de orientação (por exemplo, mesma referência de orientação que a referência de orientação do primeiro conjunto de imagens renderizadas). Dessa forma, o visualizador pode não perceber uma experiência chocante na mudança de conteúdo de imagem 14A para conteúdo de imagem 14B. Por exemplo, a renderização da exibição do segundo conjunto de imagens inclui mudar da exibição do primeiro conjunto de imagens renderizadas para a renderização da exibição do segundo conjunto de imagens.
[0133] Nas técnicas exemplificativas descritas nesta revelação, a GPU 34 inclui um pipeline de processamento gráfico que inclui um conjunto de circuitos de processamento (por exemplo, conjunto de circuitos programáveis e/ou conjunto de circuitos de função fixa) para renderizar a exibição dos conjuntos de imagens diferentes de dispositivos de câmera 12 diferentes. Por
Petição 870190046314, de 17/05/2019, pág. 59/99
55/72 exemplo, a GPU 34 pode incluir um conjunto de circuitos de hardware de textura usado para realizar as operações das técnicas exemplificativas. A GPU 34 também pode incluir um conjunto de circuitos de processamento para a mesclagem de modo a realizar as operações das técnicas exemplificativas.
[0134] Por exemplo, a GPU 34 pode usar o mapeamento de textura para mapear as imagens de projeção em um modelo de malha esférica. O modelo de malha esférica pode incluir uma pluralidade de primitivas (por exemplo, pontos, linhas, triângulos, quadrados ou outros polígonos), sendo que cada primitiva tem um ou mais vértices. A interconexão das primitivas forma um modelo de malha de uma esfera. A GPU 34 pode usar o mapeamento de textura para mapear as imagens de projeção da primeira das imagens no modelo de malha esférica, e renderizar o modelo de malha esférica para gerar conteúdo de imagem visualizável em 360 graus.
[0135] Para realizar o mapeamento de textura, a GPU 34 pode mapear um pixel da imagem de projeção nos vértices tridimensionais (por exemplo, cada vértice tem uma coordenada x, y e z) do modelo de malha esférica. O resultado pode ser uma esfera que tem o conteúdo da imagem de projeção. Como uma ilustração, imagina-se um mapa mundial bidimensional sendo mapeado em uma esfera para formar um globo. A GPU 34 pode, então, renderizar essa esfera para gerar as imagens visualizáveis em 360 graus.
[0136] A GPU 34 pode enviar o resultado da renderização para a memória de sistema 46. O processador de exibição 42 pode recuperar o conteúdo de imagem da memória
Petição 870190046314, de 17/05/2019, pág. 60/99
56/72 de sistema 46 e exibir a imagem resultante em 360 graus na tela 44. Em alguns exemplos, a tela 44 pode exibir uma porção da esfera inteira, e o visualizador pode fazer interface com o dispositivo 18 (por exemplo, através da tela 44 ou interface de usuário 38) para selecionar qual porção da esfera será visualizada.
[0137] Dessa forma, a GPU 34 pode renderizar a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação, e renderizar a exibição do segundo conjunto de imagens orientadas para a mesma referência de orientação que a referência de orientação do primeiro conjunto de imagens renderizadas. Conforme descrito acima, a GPU 34 não precisa renderizar a exibição do primeiro conjunto de imagens e do segundo conjunto de imagens ao mesmo tempo, porém pode mudar da exibição do primeiro conjunto de imagens renderizadas para renderizar a exibição do segundo conjunto de imagens. Entretanto, o primeiro conjunto de imagens e o segundo conjunto de imagens podem ser gerados ao mesmo tempo a partir de dispositivos de câmera diferentes 12.
[0138] Em alguns exemplos, a referência de orientação é uma direção geográfica, em que a direção geográfica está baseada em uma medição de bússola (por exemplo, de um ou mais sensores 26). Por exemplo, a GPU 34 pode renderizar a exibição do primeiro conjunto de imagens de modo que o conteúdo de imagem situado em uma primeira direção geográfica em relação ao dispositivo de câmera 12A esteja situado em uma primeira coordenada dentro de imagens renderizadas do primeiro conjunto de imagens (por exemplo, o Norte é alinhado à coordenada de centro superior). A GPU
Petição 870190046314, de 17/05/2019, pág. 61/99
57/72 pode renderizar a exibição do segundo conjunto de imagens de modo que o conteúdo de imagem situado em uma segunda direção geográfica em relação ao dispositivo de câmera 12B esteja situado em uma segunda coordenada dentro de imagens renderizadas do segundo conjunto de imagens. Neste exemplo, a primeira direção geográfica e a segunda direção geográfica são a mesma direção geográfica (por exemplo, alinhadas ao Norte), e a primeira coordenada e a segunda coordenada são a mesma coordenada (por exemplo, coordenada de centro superior conforme ilustrado na Figura 5B ou coordenada superior direita conforme ilustrado na Figura 6C).
[0139] A GPU 34 pode receber o primeiro conjunto de imagens e o segundo conjunto de imagens já orientados para a mesma referência de orientação. Em alguns exemplos, a GPU 34 pode receber informações indicativas da referência de orientação em relação ao primeiro conjunto de imagens, e receber informações indicativas da referência de orientação em relação ao segundo conjunto de imagens. A GPU 34 pode ajustar a orientação do primeiro e do segundo conjuntos de imagens com base nas informações indicativas da referência de orientação em relação ao primeiro e ao segundo conjuntos de imagens. Em tais exemplos, a GPU 34 pode renderizar a exibição do primeiro e do segundo conjuntos de imagens tendo a orientação ajustada.
[0140] Além disso, em alguns exemplos, a GPU 34 pode renderizar a exibição do primeiro e do segundo conjunto de imagens para duas referências de orientação diferentes (por exemplo, alinhamento direcional geográfico e alinhamento de inclinação) ou três referências de
Petição 870190046314, de 17/05/2019, pág. 62/99
58/72 orientação diferentes (por exemplo, alinhamento direcional geográfico (azimute), alinhamento de inclinação (altitude) e ângulo de rotação). Por exemplo, a GPU 34 pode renderizar a exibição do primeiro conjunto de imagens orientadas para uma primeira referência de orientação (por exemplo, alinhamento direcional geográfico) e uma segunda referência de orientação (por exemplo, alinhamento de inclinação) e/ou uma terceira orientação (por exemplo, ângulo de rotação). A GPU 34 também pode renderizar a exibição do segundo conjunto de imagens orientado para a primeira orientação e a mesma segunda referência de orientação que a segunda referência de orientação do primeiro conjunto de imagens, e a mesma terceira referência de orientação que a terceira referência de orientação do primeiro conjunto de imagens.
[0141] Em alguns exemplos, a GPU 34 pode renderizar a exibição do segundo conjunto de imagens para conteúdo de cena comum tanto ao primeiro conjunto de imagens como ao segundo conjunto de imagens que são exibidos em um local substancialmente igual. Por exemplo, a GPU 34 pode renderizar o conteúdo de cena comum tanto ao primeiro conjunto de imagens como ao segundo conjunto de imagens de modo que o conteúdo de cena comum seja exibido no segundo conjunto de imagens renderizado no mesmo local que o local do conteúdo de cena comum no primeiro conjunto de imagens renderizado. Em alguns exemplos, a GPU 34 pode renderizar a exibição do segundo conjunto de imagens com base em uma posição dos olhos ou da cabeça do visualizador quando o visualizador estiver visualizando o primeiro conjunto de imagens (por exemplo, selecionar a referência de orientação com base na posição dos olhos ou da cabeça do
Petição 870190046314, de 17/05/2019, pág. 63/99
59/72 visualizador).
[0142] A Figura 8 é um diagrama de blocos que ilustra a CPU 32, a GPU 34 e a memória do dispositivo 46 do dispositivo de processamento 18 da Figura 6 em detalhes adicionais. Conforme mostrado na Figura 8, a CPU 32 está comunicativamente acoplada à GPU 34 e à memória 46, e a GPU 34 está comunicativamente acoplada à CPU 32 e à memória 46. A GPU 34 pode, em alguns exemplos, ser integrada em uma placa-mãe com a CPU 32. Em exemplos adicionais, a GPU 34 pode ser implementada em uma placa gráfica instalada em uma porta de uma placa-mãe que inclui a CPU 32. EM exemplos adicionais, a GPU 34 pode ser incorporada dentro de um dispositivo periférico que é configurado para interoperar com a CPU 32. Em exemplos adicionais, a GPU 34 pode estar situada no mesmo conjunto de circuitos de processamento que a CPU 32 formando um sistema-em-um-chip (SoC).
[0143] A CPU 32 é configurada para executar o aplicativo 48, uma API de gráficos 50, um driver de GPU 52 e um sistema operacional 54. A GPU 34 inclui um controlador 56, núcleo de sombreador 58, e uma ou mais unidades de função fixa 60.
[0144] O aplicativo de visualização 48 pode incluir pelo menos algumas dentre uma ou mais instruções que fazem com que o conteúdo gráfico seja exibido ou uma ou mais instruções que fazem com que uma tarefa não gráfica (por exemplo, uma tarefa de computação de uso geral) seja realizada na GPU 34. Como um exemplo, o aplicativo de visualização 48 pode fazer com que a CPU 32 faça com que a GPU 34 renderize o vídeo ou imagens em 360 graus para exibição. O aplicativo de visualização 48 pode enviar
Petição 870190046314, de 17/05/2019, pág. 64/99
60/72 instruções para a API gráfica 50. A API gráfica 50 pode ser um serviço de tempo de funcionamento que traduz as instruções recebidas do aplicativo de software 48 em um formato que é consumivel pelo driver de GPU 52. Em alguns exemplos, a API gráfica 50 e o driver de GPU 52 podem fazer parte do mesmo serviço de software.
[0145] O driver de GPU 52 recebe as instruções d aplicativo de visualização 48, através de API gráfica 50, e controla a operação de GPU 34 para realizar a instruções. Por exemplo, o driver de GPU 52 pode formular um ou mais fluxos de comando, colocar os fluxos de comando na memória 46, e instruir a GPU 34 para executar os fluxos de comando. O driver de GPU 52 pode colocar os fluxos de comando na memória 46 e se comunicar com a GPU 34 através d sistema operacional 54 (por exemplo, através de uma ou mais chamadas do sistema).
[0146] O controlador 56 de GPU 34 é configurado para recuperar os comandos armazenados nos fluxos de comando, e expedir os comandos para execução no núcleo de sombreador 58 e uma ou mais unidades de função fixa 60. O controlador 56 pode expedir os comandos de um fluxo de comandos para execução em uma ou mais unidades de função fixa 60 ou um subconjunto de núcleo de sombreador 58 e uma ou mais unidades de função fixa 60. O controlador 56 pode ser hardware, conjunto de circuitos de função fixa de GPU 34, pode ser um conjunto de circuitos programáveis de GPU 34 para executar software ou firmware, ou uma combinação de ambos.
[0147] O núcleo de sombreador 58 inclui um conjunto de circuitos programáveis (por exemplo, núcleos de
Petição 870190046314, de 17/05/2019, pág. 65/99
61/72 processamento em que o software é executado) . Uma ou mais unidades de função fixa 60 incluem um conjunto de circuitos de função fixa configurado para realizar operações limitadas com mínima flexibilidade funcional. O núcleo de sombreador 58 e uma ou mais unidades de função fixa 60 formam em conjunto um pipeline gráfico configurado para realizar o processamento gráfico.
[0148] O núcleo de sombreador 58 pode ser configurado para executar um ou mais programas sombreadores que são baixados na GPU 34 da CPU 32. Um programa sombreador, em alguns exemplos, pode ser uma versão compilada de um programa escrito em uma linguagem de sombreamento de alto nível (por exemplo, uma Linguagem de Sombreamento OpenGL (GLSL), uma Linguagem de Sombreamento de Alto Nível (HLSL) , uma Linguagem de Sombreamento C for Graphics (Cg), etc). Em alguns exemplos, o núcleo de sombreador 58 pode incluir uma pluralidade de unidades de processamento que são configuradas para operar em paralelo (por exemplo, um pipeline SIMD). O núcleo sombreador 58 pode ter uma memória de programa que armazena instruções de programa sombreador e um registro de estado de execução (por exemplo, um registro de contador de programa) que indica a instrução atual na memória de programa que é executada ou a próxima instrução a ser buscada. Exemplos de programas de sombreamento executados no núcleo de sombreador 58 incluem, por exemplo, sombreadores de vértice, sombreadores de pixel(também conhecidos como sombreadores de fragmento), sombreadores de geometria, sombreadores hull, sombreadores de domínio, sombreadores de computação e/ou sombreadores unificados.
Petição 870190046314, de 17/05/2019, pág. 66/99
62/72 [0149] As unidades de função fixa 60 podem incluir hardware que é conectado para executar determinadas funções. Embora o hardware de função fixa possa ser configurável, por meio de um ou mais sinais de controle, por exemplo, para executar funções diferentes, o hardware de função fixa tipicamente não inclui uma memória de programa que seja capaz de receber programas compilados pelo usuário. Em alguns exemplos, uma ou mais unidades de função fixa 60 podem incluir, por exemplo, unidades de processamento que realizam operações de varredura (por exemplo, teste de profundidade, teste scissors, combinação alfa, etc.).
[0150] O driver de GPU 52 de CPU 32 pode ser configurado para gravar os fluxos de comando na memória 46, e o controlador 56 da GPU 34 pode ser configurado para ler o um ou mais comandos de fluxos de comando da memória 46. Em alguns exemplos, um ou ambos os fluxos de comando podem ser armazenados como um buffer circular na memória 46. Um buffer de anel pode ser um buffer com um esquema de endereçamento circular em que a CPU 32 e a GPU 34 mantêm variáveis de estado sincronizadas associadas à gravação de dados e leitura de dados do buffer circular. Por exemplo, se o primeiro fluxo de comando for um buffer circular, cada CPU 32 e GPU 34 pode armazenar um ponteiro de gravação indicando o próximo endereço que será gravado no buffer circular, e um ponteiro de leitura indicando o próximo endereço que será lido no buffer circular.
[0151] Quando a CPU 32 grava um novo comando no buffer circular, a CPU 32 pode atualizar o ponteiro de gravação na CPU 32 e instruir a GPU 34 para atualizar o
Petição 870190046314, de 17/05/2019, pág. 67/99
63/72 ponteiro de gravação na GPU 34. De modo similar, quando a CPU 34 lê um novo comando do buffer circular, a GPU 34 pode atualizar o ponteiro de leitura na GPU 34 e instruir a CPU 32 para atualizar o ponteiro de leitura na CPU 32. Outros mecanismos de sincronização são possíveis. Quando os ponteiros de leitura e/ou gravação atingem um endereço mais alto na faixa de endereços alocados para o buffer circular, os ponteiros de leitura e/ou gravação podem ser envolvidos no endereço mais baixo para implementar um esquema de endereçamento circular.
[0152] Um exemplo de operação de um driver de GPU 52 e um exemplo de controlador de GPU 56 serão descritos agora em relação à Figura 8. O driver de GPU 52 recebe uma ou mais instruções do aplicativo de visualização 48 que especificam operações de gráficos e/ou operações de computação de uso geral que serão realizadas pela GPU 34. O driver de GPU 52 coloca o fluxo de comando de saída na memória 46, que é acessível pelo controlador de GPU 56. O controlador de GPU 52 notifica o controlador de GPU 56 de que o fluxo de comando correspondente ao aplicativo de visualização 48 está disponível para processamento. Por exemplo, o controlador de GPU 52 pode gravar em um registrador de GPU (por exemplo, um registro de hardware de GPU consultado por GPU 34 e/ou um registro mapeado em memória de GPU consultado por GPU 34) um ou mais valores indicando que o fluxo de comando está pronto para execução.
[0153] Mediante a notificação de que o fluxo de comando está pronto para execução, o controlador 56 da GPU 34 pode determinar se os recursos estão atualmente
Petição 870190046314, de 17/05/2019, pág. 68/99
64/72 disponíveis na GPU 34 para começar a executar o fluxo de comando. Se os recursos estiverem disponíveis, o controlador 56 começará a expedir os comandos no fluxo de comando.
[0154] Como parte do processamento gráfico, a CPU 32 pode descarregar determinadas tarefas de processamento gráfico na GPU 34. Por exemplo, o aplicativo 48 pode gerar coordenadas de vértices para primitivos do modelo de malha esférica, e armazenar essas coordenadas como coordenadas de modelo de malha esférica 64 na memória 46. Adicionalmente, o aplicativo 48 pode armazenar conjuntos das imagens que o dispositivo de processamento 18 recebe do servidor 16. Por exemplo, o aplicativo 48 pode armazenar conjuntos de imagens 62A a 62N, cada um para conteúdos de imagem 14 gerados de respectivos dispositivos de câmera 12. Em alguns exemplos, o aplicativo 48 não precisa armazenar todos os conjuntos de imagens 62A a 62N ao mesmo tempo; embora tal armazenamento seja possível. O aplicativo 48 pode armazenar os conjuntos de imagens de conteúdos de imagem 14 que a GPU 34 irá renderizar para exibição.
[0155] O driver de GPU 52 pode instruir o controlador 56 para recuperar um dos conjuntos de imagens 62A a 62N para renderização da exibição. Em exemplos em que a GPU 34 gera as imagens de projeção ou ajusta as orientações das imagens de projeção, o driver de GPU 52 pode instruir o controlador 56 para recuperar um dos conjuntos de imagens 62A a 62N para geração das imagens de projeção e/ou ajuste da orientação das imagens de projeção para a referência de orientação comum.
[0156] Se necessário, o driver de GPU 52 pode
Petição 870190046314, de 17/05/2019, pág. 69/99
65/72 instruir o controlador 56 para fazer com que o hardware de mapeamento de textura, que é um exemplo de unidades de função fixa 60, realize o mapeamento de textura para gerar as imagens de projeção a partir das imagens circulares com base nas operações descritas acima. Também, se necessário, o driver de GPU 52 pode instruir o controlador 56 para fazer com que o núcleo de sombreador 58 execute um sombreador de vértice e/ou sombreador de pixel desenvolvido para ajustar as imagens de projeção para a referência de orientação comum.
[0157] Por exemplo, o aplicativo de visualização 48 pode dividir a imagem de projeção em uma pluralidade de primitivas. O sombreador de vértice, que é executado no núcleo de sombreador 58, pode ajustar as coordenadas de vértice das primitivas para ajustar a orientação da imagem de projeção para a referência de orientação comum. Por exemplo, o sombreador de vértice pode receber uma matriz de multiplicação, definida pelo aplicativo de visualização 48, que avalia que cada vértice da imagem de projeção deve ser multiplicado para gerar novos vértices que alinham a imagem de projeção à referência de orientação comum. Em exemplos em que as imagens de projeção já estão adequadamente
orientadas para a referência de orientação comum, essa
operação pelo sombreador de vértice pode não ser
necessária [0158] o driver de GPU 52 pode instruir o
controlado r 5 6 para expedir comandos para o hardware de
mapeamento de textura de unidades de função fixa 60 para realizar o mapeamento de textura para mapear as imagens de projeção para o modelo de malha esférica. Para realizar o
Petição 870190046314, de 17/05/2019, pág. 70/99
66/72 mapeamento de textura, o driver de GPU 52 pode indicar à GPU 34 quais coordenadas das imagens de projeção correspondem a quais coordenadas de modelo de malha esférica 64. Uma forma exemplificativa para indicar tal correspondência é através do sombreador de vértice executado no conjunto de circuitos no conjunto de circuitos de núcleo de sombreador 58. A função de um sombreador de vértice é realizar o processamento em vértices do modelo de malha esférica. Para realizar tal processamento, o aplicativo 48, através de API gráfica 50 e driver de GPU 52, instrui o controlador 56 para recuperar lotes de coordenadas de vértice (por exemplo, coordenadas de vértice para um primitivo do modelo de malha esférica armazenado como coordenadas de modelo de malha esférica 64) da memória 46. Além disso, o aplicativo 48, através de API gráfica 50 e do driver de GPU 52, pode instruir o controlador 56 para recuperar as coordenadas das imagens de projeção (por exemplo, um dos conjuntos de imagens 62A a 62N).
[0159] O controlador 56 pode fornecer as coordenadas x, y, z das coordenadas do vértice para uma primitiva do modelo de malha esférica e as coordenadas s, t das coordenadas da imagem de projeção para uma primitiva correspondente ao sombreador de vértice como entrada para processamento. Além disso, o aplicativo 48, através de API gráfica 50 e do driver de GPU 52, instrui um circuito de hardware de textura, que é um exemplo de unidades de função fixa 60, para recuperar uma primitiva da imagem de projeção e armazenar a primitiva na memória local 36 (a memória local 36 é ilustrada na Figura 7).
[0160] O aplicativo 48, através de API gráfica 50
Petição 870190046314, de 17/05/2019, pág. 71/99
67/72 e do driver de GPU 52, pode enviar comandos para o circuito de hardware de textura instruindo o circuito de hardware de textura a sobrepor a primitiva da imagem de projeção na primitiva de modelo de malha esférica. 0 circuito de hardware de textura pode esticar ou, de outro modo, redimensionar, conforme instruído pelo aplicativo 48, a primitiva da imagem de projeção de modo que a primitiva da imagem de projeção se ajuste à primitiva do modelo de malha esférica (por exemplo, por interpelação, filtragem e outras operações matemáticas para representar a primitiva de textura). 0 circuito hardware de textura pode atribuir os atributos de vértice (por exemplo, valores de cor e opacidade) aos vértices do modelo de malha esférica com base nos atributos de vértice das primitivas da imagem de projeção. [0161] As unidades de função fixa 60 da GPU 34 podem rasterizar a saída do sombreador de vértice e produzir a primitiva rasterizada para um sombreador de pixel. O aplicativo 48, através de API gráfica 50 e do driver de GPU 52, pode fazer com que o controlador 56 de GPU 34 execute o sombreador de pixel (também chamado de sombreador de fragmento) no conjunto de circuitos de núcleo de sombreador 58. O sombreador de pixel pode atribuir os valores de pixel da primitiva da imagem de projeção aos pixels correspondentes na primitiva rasterizada para renderizar o conteúdo de imagem em 360 graus. A CPU 32 e a GPU 34 podem repetir estas etapas para todas as primitivas do modelo de malha esférica e as primitivas da imagem de projeção.
[0162] O resultado da renderização para exibição das imagens de projeção é o fluxo de imagens 66 que a GPU
Petição 870190046314, de 17/05/2019, pág. 72/99
68/72 armazena na memória 46. 0 processador de exibição 42 recupera o fluxo de imagens 66 e processa o fluxo de imagens para exibição 44 para consumo. Quando o visualizador interage com a interface de usuário 38 para mover-se no conteúdo de imagem em 360 graus, a CPU 32 pode fazer com que a GPU 34 pare a renderização de um dos conjuntos de imagens 62A a 62N e inicie a renderização de outro conjunto de imagens 62A a 62N. A CPU 32 e a GPU 34 podem repetir as operações exemplificativas acima no novo conjunto de imagens 62A a 62N. A GPU 34 pode então ser adicionada no conteúdo de imagem em 360 graus resultante a partir do novo conjunto de imagens 62A a 62N no fluxo de imagens 66 para uma transição suave de um dos conteúdos de imagem 14 para outro dos conteúdos de imagem 14.
[0163] A Figura 9 é um fluxograma que ilustra um exemplo de método de operação de acordo com um ou mais exemplos de técnicas descritos nesta revelação. A GPU 34 recebe um primeiro conjunto de imagens de um primeiro dispositivo de câmera 12 que está situado em um primeiro local (68) . O primeiro conjunto de imagens pode ser um primeiro conjunto de imagens de projeção que já foi orientado para a referência de orientação comum, pode ser um primeiro conjunto de imagens de projeção que já foi orientado para a referência de orientação comum, ou pode ser um primeiro conjunto de imagens circulares capturadas pelas lentes 20A e 20B. Se as imagens de projeção não forem orientadas para a referência de orientação comum, a GPU 34 pode orientar as imagens para a referência de orientação comum. Para imagens circulares, a GPU 34 pode realizar o mapeamento de textura das imagens circulares para gerar as
Petição 870190046314, de 17/05/2019, pág. 73/99
69/72 imagens de projeção e, então, orientar as imagens de projeção para uma referência de orientação comum.
[0164] A GPU 34 pode renderizar a exibição das primeiras imagens orientadas para a referência de orientação (70) . Por exemplo, a GPU 34 pode realizar o mapeamento de textura das imagens de projeção para um modelo de malha esférica, e renderizar o modelo de malha esférica para uma esfera de conteúdo de imagem para exibição. A GPU 34 pode armazenar o conteúdo de imagem da esfera de conteúdo de imagem como um fluxo de imagens 66.
[0165] Quando a CPU 32 determinar que a GPU 34 deve renderizar a exibição do conteúdo de imagem capturada por um segundo dispositivo de câmera diferente 12 (por exemplo, mudar para renderizar a exibição de conteúdo de imagem diferente), a GPU 34 recebe um segundo conjunto de imagens de um segundo dispositivo de câmera diferente 12 que está em um segundo local diferente (72). Conforme com o primeiro conjunto de imagens, a GPU 34 pode gerar as imagens de projeção e orientar as imagens de projeção para a referência de orientação comum que é a mesma referência de orientação do primeiro conjunto de imagens renderizadas.
[0166] A GPU 34 pode renderizar a exibição das segundas imagens orientadas para a mesma referência de orientação que o primeiro conjunto de imagens renderizadas(74). Por exemplo, a GPU 34 pode realizar o mapeamento de textura das imagens de projeção do segundo conjunto de imagens para um modelo de malha esférica, e renderizar o modelo de malha esférica para uma esfera de conteúdo de imagem para exibição. A GPU 34 pode armazenar o
Petição 870190046314, de 17/05/2019, pág. 74/99
70/72 conteúdo de imagem da esfera de conteúdo de imagem como um fluxo de imagens 66.
[0167] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível como meios de armazenamento de dados. Dessa forma, os meios legíveis por computador podem, em geral, corresponder a meios de armazenamento legíveis por computador tangíveis que são não temporários. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que podem ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para a implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[0168] A título de exemplo, e não de limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Deve-se compreender que os meios de
Petição 870190046314, de 17/05/2019, pág. 75/99
71/72 armazenamento legíveis por computador e meios de armazenamento de dados não incluem ondas portadoras, sinais, ou outros meios temporários, porém são em vez disso direcionados para meios de armazenamento tangíveis não temporários. 0 disco e o disquete, como usado no presente documento, inclui disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco Bluray em que disquetes reproduzem dados magneticamente, enquanto os discos reproduzem dados opticamente com lasers. Combinações desses também podem estar incluídas dentro do escopo de meios legíveis por computador.
[0169] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuito integrado para aplicação específica (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico integrado ou distinto equivalente. Consequentemente, o termo processador, conforme usado no presente documento podem se referir a qualquer estrutura anterior ou qualquer outra estrutura adequada para a implementação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Também, as técnicas poderíam ser completamente implementadas em ou mais circuitos ou elementos lógicos.
[0170] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou
Petição 870190046314, de 17/05/2019, pág. 76/99
72/72 aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não necessariamente exigem realização por unidades de hardware diferentes. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[0171] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (27)

  1. REIVINDICAÇÕES
    1. Método de geração de conteúdo de imagem, sendo que o método compreende:
    receber um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em uma primeira localização, sendo que o primeiro dispositivo de câmera tem uma primeira orientação;
    renderizar a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação; receber um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em uma segunda localização diferente, localização diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação; e renderizar a exibição do segundo conjunto de imagens para a referência de orientação.
  2. 2. Método, de acordo com a reivindicação 1, que compreende adicionalmente:
    determinar uma posição dos olhos ou da cabeça de um visualizador quando o primeiro conjunto de imagens for renderizado para exibição, em que a referência de orientação é selecionada com base na posição determinada dos olhos ou da cabeça do visualizador.
  3. 3. Método, de acordo com a reivindicação 1, em que a referência de orientação compreende uma direção geográfica.
  4. 4. Método, de acordo com a reivindicação 1, em que a renderização da exibição do primeiro conjunto de
    Petição 870190046314, de 17/05/2019, pág. 78/99
    2/10 imagens compreende renderizar a exibição do primeiro conjunto de imagens de modo que o conteúdo de imagem localizado em uma primeira direção geográfica em relação ao primeiro dispositivo de câmera esteja localizado em uma primeira coordenada dentro de imagens renderizadas do primeiro conjunto de imagens, em que a renderização da exibição do segundo conjunto de imagens compreende renderizar a exibição do segundo conjunto de imagens de modo que o conteúdo de imagem localizado em um segunda direção geográfica em relação ao segundo dispositivo de câmera esteja localizado em uma segunda coordenada dentro de imagens renderizadas do segundo conjunto de imagens, e em que a primeira direção geográfica e a segunda geográfica é a mesma direção geográfica, e a primeira coordenada e a segunda coordenada é a mesma coordenada.
  5. 5. Método, de acordo com a reivindicação 1, em que a renderização da exibição do segundo conjunto de imagens compreende mudar da exibição do primeiro conjunto de imagens renderizadas para a renderização da exibição do segundo conjunto de imagens.
  6. 6. Método, de acordo com a reivindicação 1, que compreende adicionalmente:
    receber informações indicativas da referência de orientação em relação ao primeiro conjunto de imagens;
    receber informações indicativas da referência de orientação em relação ao segundo conjunto de imagens;
    ajustar uma orientação do primeiro conjunto de imagens com base nas informações indicativas da referência de orientação em relação ao primeiro conjunto de imagens; e ajustar uma orientação do segundo conjunto de
    Petição 870190046314, de 17/05/2019, pág. 79/99
    3/10 imagens com base nas informações indicativas da referência de orientação em relação ao segundo conjunto de imagens, em que a renderização da exibição do primeiro conjunto de imagens compreende renderizar a exibição do primeiro conjunto de imagens que tem a orientação ajustada, e em que a renderização da exibição do segundo conjunto de imagens compreende renderizar a exibição do segundo conjunto de imagens que tem a orientação ajustada.
  7. 7. Método, de acordo com a reivindicação 1, em que a recepção do primeiro conjunto de imagens compreende receber o primeiro conjunto de imagens orientado para a referência de orientação, e em que a recepção do segundo conjunto de imagens compreende receber o segundo conjunto de imagens orientado para a referência de orientação.
  8. 8. Método, de acordo com a reivindicação 1, em que a referência de orientação compreende uma primeira referência de orientação, em que a renderização da exibição do primeiro conjunto de imagens compreende renderizar a exibição do primeiro conjunto de imagens orientado para a primeira referência de orientação e uma segunda referência de orientação, e em que a renderização da exibição do segundo conjunto de imagens compreende renderizar a exibição do segundo conjunto de imagens orientado para a primeira orientação e a segunda referência de orientação.
  9. 9. Método, de acordo com a reivindicação 8, em que a renderização da exibição do primeiro conjunto de imagens compreende renderizar a exibição do primeiro conjunto de imagens orientado para a primeira referência de orientação, a segunda referência de orientação, e uma
    Petição 870190046314, de 17/05/2019, pág. 80/99
    4/10 terceira referência de orientação, e em que a renderização da exibição do segundo conjunto de imagens compreende renderizar a exibição do segundo conjunto de imagens orientado para a primeira referência de orientação, a segunda referência de orientação e a terceira referência de orientação.
  10. 10. Método, de acordo com a reivindicação 1, em que o primeiro dispositivo de câmera compreende uma pluralidade de lentes, e o segundo dispositivo de câmera compreende uma pluralidade de lentes, em que a recepção do primeiro conjunto de imagens compreende receber o primeiro conjunto de imagens geradas a partir do conteúdo de imagem capturada por pelo menos duas lentes da pluralidade de lentes do primeiro dispositivo de câmera, e em que a recepção do segundo conjunto de imagens compreende receber o segundo conjunto de imagens geradas a partir do conteúdo de imagem capturada por pelo menos duas lentes da pluralidade de lentes do segundo dispositivo de câmera.
  11. 11. Método, de acordo com a reivindicação 1, em que a recepção do primeiro conjunto de imagens compreende receber uma pluralidade de imagens equirretangulares capturadas por lentes olho-de-peixe do primeiro dispositivo de câmera, e em que a recepção do segundo conjunto de imagens compreende receber uma pluralidade de imagens equirretangulares capturadas por lentes olho-de-peixe do segundo dispositivo de câmera.
  12. 12. Método, de acordo com a reivindicação 1, em que o primeiro conjunto de imagens e o segundo conjunto de imagens são gerados ao mesmo tempo.
  13. 13. Método, de acordo com a reivindicação 1, em
    Petição 870190046314, de 17/05/2019, pág. 81/99
    5/10 que a renderização da exibição do segundo conjunto de imagens compreende renderizar o conteúdo de cena comum tanto ao primeiro conjunto de imagens como ao segundo conjunto de imagens de modo que o conteúdo de cena comum seja exibido no segundo conjunto de imagens renderizado no mesmo local que um local do conteúdo de cena comum no primeiro conjunto de imagens renderizado.
  14. 14. Dispositivo de geração de conteúdo de imagem, sendo que o dispositivo compreende:
    um dispositivo de memória configurado para: armazenar um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em uma primeira localização, sendo que o primeiro dispositivo de câmera tem uma primeira orientação; e armazenar um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em uma segunda localização diferente, localização diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação; e uma unidade de processamento gráfico (GPU) que compreende pelo menos um dentre um conjunto de circuitos de função fixa ou programável, sendo que a GPU é configurada para:
    receber o primeiro conjunto de imagens do dispositivo de memória;
    renderizar a exibição do primeiro conjunto de imagens para uma referência de orientação;
    receber o segundo conjunto de imagens do dispositivo de memória; e renderizar a exibição do segundo
    Petição 870190046314, de 17/05/2019, pág. 82/99
    6/10 conjunto de imagens orientado para a referência de orientação.
  15. 15. Dispositivo, de acordo com a reivindicação 14, que compreende adicionalmente: um circuito rastreador configurado para determinar uma posição dos olhos ou da cabeça de um visualizador quando o primeiro conjunto de imagens for renderizado para exibição, em que a referência de orientação é selecionada com base na posição determinada dos olhos ou da cabeça do visualizador.
  16. 16. Dispositivo, de acordo com a reivindicação 14, em que para renderizar a exibição do primeiro conjunto de imagens, a GPU é configurada para renderizar a exibição do primeiro conjunto de imagens de modo que o conteúdo de imagem localizado em uma primeira direção geográfica em relação ao primeiro dispositivo de câmera esteja localizado em uma primeira coordenada dentro de imagens renderizadas do primeiro conjunto de imagens, em que para renderizar a exibição do segundo conjunto de imagens, a GPU é configurada para renderizar a exibição do segundo conjunto de imagens de modo que o conteúdo de imagem localizado em um segunda direção geográfica em relação ao segundo dispositivo de câmera esteja localizado em uma segunda coordenada dentro de imagens renderizadas do segundo conjunto de imagens, e em que a primeira direção geográfica e a segunda geográfica é a mesma direção geográfica, e a primeira coordenada e a segunda coordenada é a mesma coordenada.
  17. 17. Dispositivo, de acordo com a reivindicação 14, em que para renderizar a exibição do segundo conjunto
    Petição 870190046314, de 17/05/2019, pág. 83/99
    7/10 de imagens, a GPU é configurada para mudar da renderização da exibição do primeiro conjunto de imagens para a renderização da exibição do segundo conjunto de imagens.
  18. 18. Dispositivo, de acordo com a reivindicação 14, em que a GPU é configurada para:
    receber informações indicativas da referência de orientação em relação ao primeiro conjunto de imagens;
    receber informações indicativas da referência de orientação em relação ao segundo conjunto de imagens;
    ajustar uma orientação do primeiro conjunto de imagens com base nas informações indicativas da referência de orientação em relação ao primeiro conjunto de imagens; e ajustar uma orientação do segundo conjunto de imagens com base nas informações indicativas da referência de orientação em relação ao segundo conjunto de imagens,
    em que para renderizar a exibição do primeiro conjunto de imagens, a GPU é configurada para renderizar a exibição do primeiro orientação ajustada, e conjunto de imagens que tem a em que para renderizar a exibição do segundo conjunto de imagens, a GPU é configurada para renderizar a exibição do segundo orientação ajustada. conjunto de imagens que tem a
  19. 19. Dispositivo, de acordo com a reivindicação
    14, em que a GPU é configurada para receber o primeiro conjunto de imagens orientado para a referência de orientação, e receber o segundo conjunto de imagens
    orientado para a referência de orientação. 20. Dispositivo, de acordo com a reivindicação 14, em que a referência de orientação compreende uma
    Petição 870190046314, de 17/05/2019, pág. 84/99
    8/10 primeira referência de orientação, em que para renderizar a exibição do primeiro conjunto de imagens, a GPU é configurada para renderizar a exibição do primeiro conjunto de imagens orientado para a primeira referência de orientação e uma segunda referência de orientação, e em que para renderizar a exibição do segundo conjunto de imagens, a GPU é configurada para renderizar a exibição do segundo conjunto de imagens orientado para a primeira orientação e a segunda referência de orientação.
  20. 21. Dispositivo, de acordo com a reivindicação 20, em que para renderizar a exibição do primeiro conjunto de imagens, a GPU é configurada para renderizar a exibição do primeiro conjunto de imagens orientado para a primeira referência de orientação, a segunda referência de orientação, e uma terceira referência de orientação, e em que para renderizar a exibição do segundo conjunto de imagens, a GPU é configurada para renderizar a exibição do segundo conjunto de imagens orientado para a primeira referência de orientação, a segunda referência de orientação e a terceira referência de orientação.
  21. 22. Dispositivo, de acordo com a reivindicação 14, em que o primeiro dispositivo de câmera compreende uma pluralidade de lentes, e o segundo dispositivo de câmera compreende uma pluralidade de lentes, em que para receber o primeiro conjunto de imagens, a GPU é configurada para receber o primeiro conjunto de imagens geradas a partir do conteúdo de imagem capturada por pelo menos duas lentes da pluralidade de lentes do primeiro dispositivo de câmera, e em que para receber o segundo conjunto de imagens, a GPU é configurada para receber o segundo conjunto de imagens
    Petição 870190046314, de 17/05/2019, pág. 85/99
    9/10 geradas a partir do conteúdo de imagem capturada por pelo menos duas lentes da pluralidade de lentes do segundo dispositivo de câmera.
  22. 23. Dispositivo, de acordo com a reivindicação 14, em que para receber o primeiro conjunto de imagens, a GPU é configurada para receber uma pluralidade de imagens equirretangulares capturadas por lentes olho-de-peixe do primeiro dispositivo de câmera, e em que para receber o segundo conjunto de imagens, a GPU é configurada para receber uma pluralidade de imagens equirretangulares capturadas por lentes olho-de-peixe do segundo dispositivo de câmera.
  23. 24. Dispositivo, de acordo com a reivindicação 14, em que o primeiro conjunto de imagens e o segundo conjunto de imagens são gerados ao mesmo tempo.
  24. 25. Dispositivo, de acordo com a reivindicação 14, em que para renderizar a exibição do segundo conjunto de imagens, a GPU é configurada para renderizar o conteúdo de cena comum tanto ao primeiro conjunto de imagens como ao segundo conjunto de imagens de modo que o conteúdo de cena comum seja exibido no segundo conjunto de imagens renderizado no mesmo local que um local do conteúdo de cena comum no primeiro conjunto de imagens renderizado.
  25. 26. Dispositivo, de acordo com a reivindicação 14, em que o dispositivo compreende um dentre um microprocessador, circuito integrado, um dispositivo de comunicação sem fio ou um dispositivo portátil.
  26. 27. Meio de armazenamento legível por computador que tem instruções armazenadas na mesma que quando executadas fazem com que um ou mais processadores:
    Petição 870190046314, de 17/05/2019, pág. 86/99
    10/10 recebam um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em uma primeira localização, sendo que o primeiro dispositivo de câmera tem uma primeira orientação;
    renderizem a exibição do primeiro conjunto de imagens orientadas para uma referência de orientação; recebam um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em uma segunda localização diferente, localização diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação; e renderizem a exibição do segundo conjunto de imagens para a referência de orientação.
  27. 28. Dispositivo de geração de conteúdo de imagem, sendo que o dispositivo compreende:
    meios para receber um primeiro conjunto de imagens geradas a partir de um primeiro dispositivo de câmera em uma primeira localização, sendo que o primeiro dispositivo de câmera tem uma primeira orientação;
    meios para renderizar a exibição do primeiro conjunto de imagens para uma referência de orientação;
    meios para receber um segundo conjunto de imagens diferentes geradas a partir de um segundo dispositivo de câmera diferente em uma segunda localização diferente, localização diferente, sendo que o segundo dispositivo de câmera tem uma segunda orientação, sendo que a segunda orientação é diferente da primeira orientação; e exibir o segundo conjunto de imagens orientado para uma referência de orientação.
BR112019010099A 2016-11-21 2017-10-10 costura de imagem orientada para conteúdo de imagem esférica BR112019010099A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/357,486 US10325391B2 (en) 2016-11-21 2016-11-21 Oriented image stitching for spherical image content
PCT/US2017/055932 WO2018093483A1 (en) 2016-11-21 2017-10-10 Oriented image stitching for spherical image content

Publications (1)

Publication Number Publication Date
BR112019010099A2 true BR112019010099A2 (pt) 2019-10-01

Family

ID=60245191

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019010099A BR112019010099A2 (pt) 2016-11-21 2017-10-10 costura de imagem orientada para conteúdo de imagem esférica

Country Status (10)

Country Link
US (1) US10325391B2 (pt)
EP (1) EP3542345A1 (pt)
JP (1) JP2020502893A (pt)
KR (1) KR20190084987A (pt)
CN (1) CN109997167B (pt)
AU (1) AU2017360364A1 (pt)
BR (1) BR112019010099A2 (pt)
CA (1) CA3040874A1 (pt)
TW (1) TW201820862A (pt)
WO (1) WO2018093483A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10861359B2 (en) * 2017-05-16 2020-12-08 Texas Instruments Incorporated Surround-view with seamless transition to 3D view system and method
US10687119B2 (en) * 2017-06-27 2020-06-16 Samsung Electronics Co., Ltd System for providing multiple virtual reality views
US10725536B2 (en) * 2018-08-21 2020-07-28 Disney Enterprises, Inc. Virtual indicium display system for gaze direction in an image capture environment
US11323754B2 (en) * 2018-11-20 2022-05-03 At&T Intellectual Property I, L.P. Methods, devices, and systems for updating streaming panoramic video content due to a change in user viewpoint
US10917565B1 (en) * 2019-03-08 2021-02-09 Gopro, Inc. Image capture device with a spherical capture mode and a non-spherical capture mode
US10999527B1 (en) * 2020-02-14 2021-05-04 Gopro, Inc. Generation of enhanced panoramic visual content
US10845943B1 (en) 2020-02-14 2020-11-24 Carmax Business Services, Llc Systems and methods for generating a 360-degree viewing experience
US11429112B2 (en) * 2020-12-31 2022-08-30 Ubtech North America Research And Development Center Corp Mobile robot control method, computer-implemented storage medium and mobile robot
US11671551B2 (en) * 2021-05-24 2023-06-06 Sony Group Corporation Synchronization of multi-device image data using multimodal sensor data

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0852732A1 (en) 1995-09-21 1998-07-15 Omniplanar, Inc. Method and apparatus for determining position and orientation
US7085409B2 (en) * 2000-10-18 2006-08-01 Sarnoff Corporation Method and apparatus for synthesizing new video and/or still imagery from a collection of real video and/or still imagery
JP3965560B2 (ja) 2002-03-26 2007-08-29 ソニー株式会社 画像処理装置および方法、撮像装置および方法、並びにプログラム
US20120092348A1 (en) 2010-10-14 2012-04-19 Immersive Media Company Semi-automatic navigation with an immersive image
DE102010051206A1 (de) * 2010-11-12 2012-05-16 Valeo Schalter Und Sensoren Gmbh Verfahren zum Erzeugen eines Bilds einer Fahrzeugumgebung und Abbildungsvorrichtung
KR101732076B1 (ko) * 2010-12-22 2017-05-02 엘지전자 주식회사 전자 기기 및 전자 기기의 제어 방법
US9418475B2 (en) * 2012-04-25 2016-08-16 University Of Southern California 3D body modeling from one or more depth cameras in the presence of articulated motion
JP5828039B2 (ja) 2012-06-11 2015-12-02 株式会社ソニー・コンピュータエンタテインメント 画像生成装置および画像生成方法
KR102089432B1 (ko) 2013-06-20 2020-04-14 엘지전자 주식회사 이동 단말기 및 이의 제어방법
US20150036016A1 (en) * 2013-07-30 2015-02-05 Qualcomm Incorporated Methods and apparatus for determining the orientation of a mobile phone in an indoor environment
GB2525232A (en) 2014-04-17 2015-10-21 Nokia Technologies Oy A device orientation correction method for panorama images
US20150312468A1 (en) 2014-04-23 2015-10-29 Narvaro Inc. Multi-camera system controlled by head rotation
US9934122B2 (en) * 2014-07-09 2018-04-03 Microsoft Technology Licensing, Llc Extracting rich performance analysis from simple time measurements
US20160119551A1 (en) * 2014-10-22 2016-04-28 Sentry360 Optimized 360 Degree De-Warping with Virtual Cameras
WO2016077057A2 (en) 2014-10-24 2016-05-19 Bounce Imaging, Inc. Imaging systems and methods
WO2016140986A1 (en) * 2015-03-01 2016-09-09 Nextvr Inc. Methods and apparatus for supporting content generation, transmission and/or playback
JP5920507B1 (ja) 2015-03-10 2016-05-18 株式会社リコー 画像処理システム、画像処理方法およびプログラム
TWM523004U (zh) * 2015-07-16 2016-06-01 鋐寶科技股份有限公司 風扇承載裝置
US9445081B1 (en) * 2015-09-25 2016-09-13 Intel Corporation Method and system of 3D image capture with dynamic cameras
US9573062B1 (en) * 2015-12-06 2017-02-21 Silver VR Technologies, Inc. Methods and systems for virtual reality streaming and replay of computer video games
US20170200315A1 (en) * 2016-01-07 2017-07-13 Brendan Lockhart Live stereoscopic panoramic virtual reality streaming system
US10657701B2 (en) * 2016-06-30 2020-05-19 Sony Interactive Entertainment Inc. Dynamic entering and leaving of virtual-reality environments navigated by different HMD users
US20180000542A1 (en) * 2016-07-02 2018-01-04 St. Jude Medical, Cardiology Division, Inc. Flexible electrode
GB2556910A (en) * 2016-11-25 2018-06-13 Nokia Technologies Oy Virtual reality display
US10212406B2 (en) * 2016-12-15 2019-02-19 Nvidia Corporation Image generation of a three-dimensional scene using multiple focal lengths

Also Published As

Publication number Publication date
JP2020502893A (ja) 2020-01-23
CN109997167A (zh) 2019-07-09
US20180144520A1 (en) 2018-05-24
EP3542345A1 (en) 2019-09-25
AU2017360364A1 (en) 2019-05-02
WO2018093483A1 (en) 2018-05-24
TW201820862A (zh) 2018-06-01
CN109997167B (zh) 2023-08-22
KR20190084987A (ko) 2019-07-17
CA3040874A1 (en) 2018-05-24
US10325391B2 (en) 2019-06-18

Similar Documents

Publication Publication Date Title
BR112019010099A2 (pt) costura de imagem orientada para conteúdo de imagem esférica
US20240112430A1 (en) Techniques for capturing and displaying partial motion in virtual or augmented reality scenes
US10102610B2 (en) Dual fisheye images stitching for spherical video
US10403044B2 (en) Telelocation: location sharing for users in augmented and virtual reality environments
US20160210785A1 (en) Augmented reality system and method for positioning and mapping
CN105137705B (zh) 一种虚拟球幕的创建方法和装置
US10397481B2 (en) Stabilization and rolling shutter correction for omnidirectional image content
KR20190125526A (ko) 사용자 움직임 정보에 기초하여 영상을 표시하기 위한 방법 및 장치
JP2019160330A (ja) 画像生成装置、及び画像表示制御装置
Bradley et al. Image-based navigation in real environments using panoramas
Jian et al. Augmented virtual environment: fusion of real-time video and 3D models in the digital earth system
US11922568B2 (en) Finite aperture omni-directional stereo light transport
Santos et al. Supporting outdoor mixed reality applications for architecture and cultural heritage
GB2566006A (en) Three-dimensional video processing
US11869137B2 (en) Method and apparatus for virtual space constructing based on stackable light field
Liao et al. Gpu parallel computing of spherical panorama video stitching
WO2018086960A1 (en) Method and device for transmitting data representative of an image
US20220321778A1 (en) Camera positioning to minimize artifacts
US11948257B2 (en) Systems and methods for augmented reality video generation
Blanco Pons Analysis and development of augmented reality applications for the dissemination of cultural heritage
Chochlík Scalable multi-GPU cloud raytracing with OpenGL
TWM601380U (zh) 遠端建構虛擬場景的系統
TW202145061A (zh) 遠端建構虛擬場景的系統、方法及非暫存性電腦可讀取記錄媒體
Domonkos et al. Volume Rendering in an Optical Tracking based Virtual Environment
Anderson 3d engine for immersive virtual environments

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 5A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2691 DE 02-08-2022 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.