Como converter uma foto normal em uma imagem retangular?

12

Eu tenho uma imagem panorâmica regular. Como convertê-lo em uma imagem equiretangular (normal → equiretangular)?

A maioria dos resultados encontrados no Google é uma conversão na direção oposta (equiretangular → normal).

Esta é a imagem que eu quero converter ( link HR )

insira a descrição da imagem aqui

Bob van Luijt
fonte
Você está começando com uma foto esférica 360 ou está tirando fotos manualmente?
precisa saber é o seguinte
Eu criei uma imagem 3d. Você pode compará-lo com uma foto comum. Gostaria de convertê-lo em uma imagem retangular.
Bob van Luijt
Não sei como fazê-lo a partir de uma cena 3D, mas para unir fotos, você pode usar PTGui ou Hugin .
precisa saber é o seguinte
Tem que ser matematicamente preciso? Você poderia envolver a imagem em torno de um cilindro e salvá-la na perspectiva orto?
Wolff
Não, não, estou realmente lutando, Hugin parece criar imagens incorretas.
Bob van Luijt

Respostas:

7

A imagem equiretangular apresenta uma esfera, é distorcida para que os meridianos e paralelos na esfera sejam mostrados como linhas verticais e horizontais retas. Um exemplo da Wikipedia:

insira a descrição da imagem aqui

À esquerda, há um mapa esférico e à direita, o mapa plano equivalente, a projeção equiretangular da esfera para um retângulo.

Não há alongamento no equador, mas a imagem é esticada horizontalmente em outro lugar. Quanto mais alongado, mais distante o ponto está do equador. As arestas superior e inferior contêm, na verdade, apenas pontos únicos - os pólos.

O retângulo tem proporções W / H = 2: 1. Isso reflete o fato de que a distância entre os pólos ao longo da esfera é exatamente metade da ida e volta completa ao longo do equador.

Você queria converter sua imagem para equiretangular. Aparentemente, as proporções são 2: 1, portanto, já é equiretangular se a esfera correspondente for esta:

insira a descrição da imagem aqui

Metade da imagem está escondida atrás da esfera, mas aí está. Como você vê, as bordas superior e inferior da sua imagem são comprimidas em pontos, os pólos.

Eu acho que você vê isso como uma peça inútil de sofismas de matemática, você esperava outra coisa. Eu acho que você quer

1) uma imagem equiretangular que apresenta uma esfera com sua imagem como parte da superfície, sem a necessidade de cobrir toda a esfera

2) quando alguém assiste a ela no meio da esfera, ele pode ver sua imagem na esfera sem distorção e em tamanho tão grande que a imagem cobre uma parte substancial do campo de visão, digamos, um setor com 90 graus de largura e 45 graus altos.

Se você aceitar alguma distorção, basta aumentar o tamanho da tela para 400%

insira a descrição da imagem aqui

Em uma esfera vista de fora, é esta:

insira a descrição da imagem aqui

(desculpe pelos glosses, meu programa CAD gratuito não permite editar as luzes)

O Affinity Photo possui Camada> Projeção ao vivo> Equiretangular, que pode mostrar a visualização dentro da esfera como se a imagem fosse pintada na superfície interna da esfera e o observador no ponto médio. Isso mostra o seguinte:

insira a descrição da imagem aqui

Cerca e horizonte curvos obviamente não são desejados, mas o sol ainda é bastante redondo. Isso porque é muito menor e fica perto da linha do equador. O horizonte e a cerca são curvos, porque na verdade estão em círculos horizontais (= paralelos do mapa esférico), os observamos um pouco para baixo e os vemos como arcos de elipse.

Pode-se endireitar a área da imagem original com distorção compensadora, ou seja. distorcendo ou mais exatamente com as equações de distorção matemática (o Affinity P também as suporta).

O Affinity Photo permite edições de imagem no modo de projeção ao vivo. As edições são aplicadas à imagem retangular equivalente subjacente, mas se observa a projeção na esfera. Aqui está uma tentativa grosseira de deformação:

insira a descrição da imagem aqui

Também é possível colar a imagem original e mesclá-la à camada de fundo nua, que está em projeção ao vivo:

insira a descrição da imagem aqui

Mas isso não é uma correção geral. Assim que o observador vira a cabeça um pouco, ele vê uma nova cena distorcida (= uma carta plana vista de um lado)

insira a descrição da imagem aqui

Não há solução geral, porque você não possui uma cena 3D, apenas uma imagem plana em uma esfera 3D.

Minha opinião é que mapear o ambiente como uma única imagem em uma esfera e observá-lo do ponto médio pode ser realidade virtual plausível apenas se a cena mapeada estiver tão distante que não possa ter nenhuma perspectiva. Mesmo nesse caso, é preciso alguma distorção inteligente da ampla janela de visualização para tornar a distância aparente infinita, não = o raio da esfera. A distorção deve viver à medida que a direção da observação muda.

Esta resposta foi totalmente reescrita após a verificação deste caso muito posterior: Como posso pintar imagens equiretangulares (360 graus)?

user287001
fonte
11

Você não pode fazer isso na sua imagem como a possui.

1) Você deseja uma projeção cilíndrica em uma esfera. Primeiro, sua tela precisa estar em uma proporção exata. 3.1416: 1 (use qualquer tela de tamanho de pixel desejada, por exemplo, 3141x1000px)

insira a descrição da imagem aqui

2) E você (normalmente) precisa que o horizonte esteja no centro da tela.

insira a descrição da imagem aqui

Em uma projeção cilíndrica (de uma esfera), você tem uma deformação específica na projeção devido à dimensão projetada vertical versus a altura real desse segmento; portanto, é necessário compensar isso ao desenhar seu desenho animado em uma tela plana.

Uma maneira fácil de fazer isso é usar o filtro Spherize no Photoshop. (Na versão arcaica que tenho neste momento, este computador está em Filtro> Distorcer> Esferizar)

Mas você SOMENTE precisa distorcer isso no eixo vertical.

insira a descrição da imagem aqui

Além disso, você precisa definir qual parte de um panorama 360 você possui. Imagine outra galinha tirando uma foto. Qual seria o ângulo da lente usada?

Eu sinto que é uma lente grande angular, permite que você esteja usando um campo angular de 120 °. Isso significa que você precisa completar sua imagem com as coisas que você tem por trás do fotógrafo de galinhas.

insira a descrição da imagem aqui


O aplicativo Google VR que você deseja usar diz que precisa de uma projeção cilíndrica, mas pede uma proporção de 2: 1 na sua imagem. Uma projeção 2: 1 normalmente é esférica que possui uma deformação diferente, mas é mais difícil obter um vídeo, por exemplo.

Por motivos práticos, eles estão de fato solicitando projeções cilíndricas; portanto, basta redefinir sua amostra original de 3,1416: 1 a 2: 1 como etapa final.

insira a descrição da imagem aqui

Simplesmente resample a imagem final. Se sua tela tiver 3141 x 1000 px, basta redimensioná-la para 2000 x 1000 p. Não o corte. O frango parecerá mais fino, mas ficará mais gordo novamente na aplicação de VR.


Para sua tela inicial: na sua imagem específica, é difícil determinar o ângulo de visão, mas vamos ver 3 cenários.

(A) Seu campo de visão é de cerca de 120 ° para que você possa acomodar 3 fotos dos bichinhos fofos, pois sua imagem postada é 2048, a tela precisa ter 2048x3 = 6144px e agora dividir isso com pi = 1955px

6144x1955px

(B) Mas se você não quer que os animais sejam muito pequenos, vamos assumir que a foto cobre 180 ° = 2048x2 = 4096 / pi = 1303

4096x1303px

(C) Ou brinque com os números.

insira a descrição da imagem aqui

Rafael
fonte
Ooooohhhh .... Espere. O link do google VR que você está fornecendo não usa projeções cilíndricas, elas usam esféricas. Vou complementar minha resposta.
1155 Rafael Rafael
Obrigado. Pergunta rápida, não tenho certeza como obter a 3.1416: 1 a 2: 1
Bob van Luijt
Simplesmente resample a imagem final. Se sua tela tiver 3141 x 1000 px, basta redimensioná-la para 2000 x 1000 p. Não o corte. O frango parecerá mais fino, mas ficará mais gordo novamente na aplicação VR.
1077 Rafael Rafael
Aha, obrigado, quase lá. Quais seriam as configurações corretas na imagem -> configurações de tamanho da imagem no Photoshop?
Bob van Luijt
Uma nota adicional. As nuvens, quanto mais você está na parte superior e inferior, precisam ser reformuladas para manter o tamanho aparente da imagem original.
1155 Rafael Rafael
3

insira a descrição da imagem aqui

Sua imagem tem poucas informações e é muito pequena. Também não tem uma geometria equiretangular. Mas você pode fazer isso no Blender, é grátis. Basta renderizá-lo em "Panorama"> "equirectangular"> "Render. Para visualizar imagens HDRI no 360, você pode usar este site: http://panoramaviewer.1bestlink.net/

Hugo
fonte
2

Imagem original:

insira a descrição da imagem aqui

Aumente o tamanho da tela e use o preenchimento com reconhecimento de conteúdo, para dar à imagem mais céu e solo. Eu usei o Photoshop:

insira a descrição da imagem aqui

Você usará o filtro de coordenadas polares na próxima etapa. Aqui está uma imagem que mostra como o Polar Coordinates funciona exatamente:

insira a descrição da imagem aqui

Como você vê, queremos converter da perspectiva inferior (retangular) para a perspectiva superior (polar). Para fazer isso, vá para Filtro -> Distorcer -> Coordenadas polares -> Retangular para polar:

insira a descrição da imagem aqui

Use preenchimento com reconhecimento de conteúdo, ferramenta de reparo ou ferramenta de carimbo para fixar as áreas no centro e nas bordas:

insira a descrição da imagem aqui

Use Coordenadas polares novamente, mas Polar para retangular neste momento. Você pode projetar esta imagem em uma esfera de 360 ​​°:

insira a descrição da imagem aqui

Digamos que você tenha uma imagem de um céu noturno. Você pode usar as coordenadas polares novamente. Porém, como o centro da sua imagem se tornará o topo após a distorção equiretangular, você só usará as coordenadas polares polar para retangular uma vez:

insira a descrição da imagem aqui

Em um software 3D (usei o Clara.io gratuito), é assim que a textura fica em uma esfera:

insira a descrição da imagem aqui

simondingdas
fonte