Tengo una imagen panorámica regular. ¿Cómo lo convierto en una imagen equirectangular (normal → equirectangular)?
La mayoría de los resultados que encuentro en Google son una conversión en la dirección opuesta (equirectangular → normal).
Esta es la imagen que quiero convertir ( enlace HR )
3d
image-format
file-conversion
Bob van Luijt
fuente
fuente
Respuestas:
La imagen equirectangular presenta una esfera, está distorsionada de modo que los meridianos y paralelos en la esfera se muestran como líneas rectas verticales y horizontales. Un ejemplo de Wikipedia:
A la izquierda hay un mapa esférico y a la derecha está el mapa plano equivalente, la proyección equirectangular de la esfera a un rectángulo.
No hay estiramiento en el ecuador, pero la imagen se estira horizontalmente en otro lugar. Cuanto más se estira, más se aleja el punto del ecuador. Los bordes superior e inferior contienen en realidad solo puntos únicos: los polos.
El rectángulo tiene proporciones W / H = 2: 1. Eso refleja el hecho de que la distancia entre los polos a lo largo de la esfera es exactamente la mitad del recorrido completo a lo largo del ecuador.
Querías convertir tu imagen a equirectangular. Al parecer, las proporciones son 2: 1, por lo que ya es equirrectangular si la esfera correspondiente es esta:
La mitad de la imagen está oculta detrás de la esfera, pero ahí está. Como puede ver, los bordes superior e inferior de su imagen se pellizcan en puntos, los polos.
Creo que ves esto como una pieza inútil de matemática sofisticada, esperabas algo más. Supongo que quieres
1) una imagen equirectangular que presenta una esfera con su imagen como parte de la superficie, no es necesario cubrirla con una esfera completa
2) cuando uno lo ve sentado en el medio de la esfera, puede ver su imagen en la esfera sin distorsión y en un tamaño tan grande que la imagen cubre una parte sustancial del campo de visión, digamos un sector de 90 grados de ancho y 45 grados de altura.
Si acepta alguna distorsión, simplemente aumenta el tamaño del lienzo al 400%
En una esfera vista desde afuera es esto:
(perdón por las glosas, mi programa CAD gratuito no permite editar las luces)
Affinity Photo tiene Layer> Live Projection> Equirectangular que puede mostrar la vista dentro de la esfera como si la imagen estuviera pintada en la superficie interior de la esfera y el observador está en el punto medio. Muestra esto:
La cerca curva y el horizonte obviamente no son deseados, pero el sol todavía es bastante redondo. Eso es porque es mucho más pequeño y está cerca de la línea del ecuador. El horizonte y la cerca están curvados, porque en realidad están en círculos horizontales (= paralelos del mapa esférico), uno los mira un poco hacia abajo y los ve como arcos de elipse.
Se puede enderezar el área de la imagen original con distorsión compensatoria, es decir. deformando o más exactamente con ecuaciones de distorsión matemática (Affinity P también las admite).
Affinity Photo permite la edición de imágenes en modo de proyección en vivo. Las ediciones se aplican a la imagen equirectangular subyacente, pero se observa la proyección en la esfera. Aquí hay un intento de deformación grosera:
Además, se puede pegar la imagen original y fusionarla en una capa de fondo desnudo, que se encuentra en proyección en vivo:
Pero esto no es una solución general. Tan pronto como el observador gira un poco la cabeza, ve una nueva forma de escena distorsionada (= una tarjeta plana vista desde un lado)
No hay una solución general, porque no tienes una escena 3D, solo una imagen plana en una esfera 3D.
Mi opinión es que mapear el entorno como una sola imagen en una esfera y verlo desde el punto medio puede ser una realidad virtual plausible solo si la escena mapeada está tan lejos que no puede tener ninguna perspectiva. Incluso en ese caso, se necesita una distorsión amplia de la vista inteligente para hacer que la distancia aparente sea infinita, no = el radio de la esfera. La distorsión debería vivir a medida que cambia la dirección de observación.
Esta respuesta fue totalmente reescrita después de verificar este caso mucho más tarde: ¿Cómo puedo pintar imágenes equirectangulares (360 grados)?
fuente
No puede hacer eso en su imagen como la tiene.
1) Desea una proyección cilíndrica en una esfera. Primero, su lienzo debe estar en una proporción exacta. 3.1416: 1 (Use cualquier lienzo de tamaño de píxel que desee, por ejemplo 3141x1000px)
2) Y usted (normalmente) necesita que el horizonte esté en el centro del lienzo.
En una proyección cilíndrica (desde una esfera) tiene una deformación específica en la proyección debido a la dimensión proyectada vertical frente a la altura real de ese segmento, por lo que debe compensar eso cuando dibuja su dibujo animado en un lienzo plano.
Una manera fácil de hacer esto es usar el filtro Spherize en Photoshop. (En la versión arcaica que tengo ahora en esta computadora está en Filtro> Distorsionar> Esferizar)
Pero SOLO necesita distorsionar eso en el eje vertical.
Pero además de eso, debes definir qué parte de un panorama 360 tienes. Imagina a otro pollo tomando una foto. ¿Cuál sería el ángulo de la lente utilizada?
Siento que es una lente gran angular, permite que tome algo como un campo angular de 120 °. Esto significa que debe completar su imagen con las cosas que tiene detrás del fotógrafo de pollo.
La aplicación Google VR que desea usar dice que necesita una proyección cilíndrica, pero solicita una proporción de 2: 1 en su imagen. Una proyección 2: 1 normalmente es esférica y tiene una deformación diferente, pero es más difícil de lograr en un video, por ejemplo.
Por razones prácticas, de hecho están pidiendo proyecciones cilíndricas, por lo que simplemente debe volver a muestrear su 3.1416: 1 a 2: 1 original como paso final.
Simplemente remuestree la imagen final. Si su lienzo tenía 3141x1000 px, simplemente vuelva a muestrearlo a 2000x1000px. No lo recortes. El pollo se verá más delgado pero volverá a engordar en la aplicación VR.
Para su lienzo inicial: en su imagen específica es difícil determinar el ángulo de visión, pero veamos 3 escenarios.
(A) Su campo de visión es de aproximadamente 120 °, por lo que puede acomodar 3 fotos de las lindas mascotas, ya que su imagen publicada es 2048, el lienzo debe ser 2048x3 = 6144px y ahora divida eso con pi = 1955px
6144x1955px
(B) Pero si no desea que las mascotas sean demasiado pequeñas, supongamos que la foto cubre 180 ° = 2048x2 = 4096 / pi = 1303
4096x1303px
(C) O juega con los números.
fuente
Su imagen tiene muy poca información y es demasiado pequeña. Tampoco tiene una geometría equirectangular. Pero puedes hacerlo en Blender, es gratis. Simplemente renderízalo en "Panorama"> "equirectangular"> "Renderizar. Para ver imágenes HDRI en 360 puedes usar este sitio: http://panoramaviewer.1bestlink.net/
fuente
Imagen original:
Aumente el tamaño del lienzo y use relleno con reconocimiento de contenido, para darle a la imagen más cielo y tierra. Utilicé Photoshop:
Utilizará el filtro Coordenadas polares en el siguiente paso. Aquí hay una imagen que muestra cómo funciona Polar Coordinates exactamente:
Como puede ver, queremos convertir de la perspectiva inferior (Rectangular) a la superior (Polar). Para hacer esto, vaya a Filtro -> Distorsionar -> Coordenadas polares -> Rectangular a polar:
Use la herramienta de relleno, reparación o estampado para fijar las áreas en el centro y alrededor de los bordes:
Use Polar Coordinates nuevamente, pero Polar to Rectangular esta vez. Puede proyectar esta imagen en una esfera de 360 °:
Digamos que tienes una imagen de un cielo nocturno. Puedes usar las coordenadas polares nuevamente. Pero dado que el centro de su imagen se convertirá en la parte superior después de la distorsión equirectangular, solo usa Coordenadas polares Polar a Rectangular una vez:
En un software 3D (utilicé el Clara.io gratuito), así es como se ve la textura en una esfera:
fuente