Metadatos de XMP para fotos esféricas

El espacio de nombres de panorámica que aquí se describe contiene propiedades que proporcionan información relacionada con la creación y la renderización de fotos esféricas, también también conocidas como panorámicas, como las creadas con la función Foto esférica de la cámara de Android 4.2. El los metadatos deben serializarse e insertarse en la foto esférica descritos en el Adobe XMP (consulta las referencias al final de esta página).

El URI del espacio de nombres es http://ns.google.com/photos/1.0/panorama/

Propiedades de los metadatos

Los diagramas y la tabla que aparecen a continuación muestran las propiedades de las fotos esféricas encapsuladas por los parámetros de GPano. Al editar y ver fotos esféricas, asegúrate de verificarás y actualices los metadatos según corresponda como se describe más adelante en este documento. Cuando especifiques los campos de pose y encabezado inicial, asegúrate de seguir las convenciones de ángulos de Euler que se analizarán más adelante en este documento.

Ten en cuenta que los productos de Google solo admiten proyecciones esféricas. Actualmente, solo otras partes admiten proyecciones adicionales.

Proyecciones esféricas

Proyecciones cilíndricas

Ten en cuenta que si la parte superior de una imagen cilíndrica está por encima del horizonte CroppedAreaTopPixels debe ser negativo. Un valor de 0 para CroppedAreaTopPixels colocará la parte superior de la imagen en el horizonte. Un valor positivo de CroppedAreaTopPixels coloca la parte superior de la imagen debajo del horizonte.

Referencia del parámetro GPano

Nombre Tipo Obligatorio Valor predeterminado:
(usuario asumido)
Descripción de la propiedad Acción obligatoria si se modifica la imagen
GPano:UsePanoramaViewer Booleano No Verdadero Indica si se debe mostrar esta imagen en un visor de fotos esféricas en lugar de mostrarla como una imagen plana normal. Esto se puede especificar en función de las preferencias del usuario o mediante el software de cosido de imágenes. La aplicación que muestra o transfiere la imagen puede optar por ignorar esto. escala/recorte:
Sin cambios. Una aplicación puede decidir cambiar esto a "False" si el campo visual es inferior a un valor determinado.
GPano:CaptureSoftware String No N/A Si la captura se realizó con una aplicación en un dispositivo móvil, como un teléfono Android, el nombre de la aplicación que se usó (por ejemplo, "Foto esférica"). Se debe dejar en blanco si las imágenes de origen se capturaron manualmente, por ejemplo, al usar una cámara réflex digital con un trípode. N/A
GPano:StitchingSoftware String No N/A El software que se usó para crear la foto esférica final. A veces, puede ser el mismo valor que el de GPano:CaptureSoftware. N/A
GPano:ProjectionType Variedad de texto

equirrectangular

Tipo de proyección que se usa en el archivo de imagen. Actualmente, los productos de Google solo admiten el valor equirrectangular. escala/recorte: No hay cambios.
GPano:PoseHeadingDegrees Real No, pero es obligatorio para mostrarse en Google Maps N/A Orientación de la brújula, medida en grados en sentido horario desde el norte, para el centro de la imagen. El valor debe ser >= 0 y < 360 escala/recorte: No hay cambios.
GPano:PosePitchDegrees Real No 0 Inclinación, medida en grados por encima del horizonte, para el centro de la imagen. El valor debe ser >= -90 y <= 90. escala/recorte: No hay cambios.
GPano:PoseRollDegrees Real No 0 Rueda, medida en grados, de la imagen, donde el nivel con el horizonte es 0. A medida que aumenta el giro, el horizonte rota en sentido antihorario en la imagen. El valor debe ser mayor que -180 y <= 180. escala/recorte: No hay cambios.
GPano:InitialViewHeadingDegrees Número entero No 0 Ángulo de orientación de la vista inicial en grados en sentido horario a partir del norte del mundo real, no relativo al centro de la panorámica. escala/recorte: No hay cambios.
GPano:InitialViewPitchDegrees Número entero No 0 El ángulo de inclinación de la vista inicial en grados sobre el horizonte del mundo real, no relativo al centro de la panorámica. escala/recorte: No hay cambios.
GPano:InitialViewRollDegrees Número entero No 0 El ángulo de balanceo de la vista inicial en grados, en el que el nivel con el horizonte del mundo real es 0. A medida que aumenta el giro, el horizonte gira en sentido antihorario en la vista. escala/recorte: No hay cambios.
GPano:InitialHorizontalFOVDegrees Real No N/A Es el campo visual horizontal inicial que el visor debe mostrar (en grados). Es similar al nivel de zoom. N/A
GPano:InitialVerticalFOVDegrees Real No N/A Es el campo visual vertical inicial que el visor debería mostrar (en grados). Es similar al nivel de zoom. Si están presentes GPano:InitialHorizontalFOVDegrees y GPano:InitialVerticalFOVDegrees, GPano:InitialHorizontalFOVDegrees tendrá prioridad. Usa solo InitialVerticalFOVDegrees si tu contenido se debe mostrar en múltiples relaciones de aspecto y prefieres que el campo visual vertical se mantenga constante mientras que el campo visual horizontal puede cambiar. Actualmente, los productos de Google no admiten este campo. N/A
GPano:FirstPhotoDate Fecha No N/A Fecha y hora de la primera imagen creada en la foto esférica. escala/recorte: No hay cambios.
GPano:LastPhotoDate Fecha No N/A Fecha y hora de la última imagen creada en la foto esférica. escala/recorte: No hay cambios.
GPano:SourcePhotosCount Número entero No N/A Cantidad de imágenes de origen que se usaron para crear la foto esférica escala/recorte: No hay cambios.
GPano:ExposureLockUsed Booleano No N/A Cuando se tomaron las fotos de origen individual, si la configuración de exposición de la cámara estaba bloqueada o no. N/A
GPano:CroppedAreaImageWidthPixels Número entero N/A Es el ancho original de la imagen en píxeles (equivalente al ancho real de la imagen para las imágenes sin editar). Consulta los diagramas anteriores. escala/recorte: Esta propiedad debe actualizarse para reflejar el nuevo tamaño de la imagen.
GPano:CroppedAreaImageHeightPixels Número entero N/A Es la altura original en píxeles de la imagen (igual a la altura real de la imagen para las imágenes sin editar). Consulta los diagramas anteriores. escala/recorte: Esta propiedad debe actualizarse para reflejar el nuevo tamaño de la imagen.
GPano:FullPanoWidthPixels Número entero N/A Ancho completo original a partir del cual se recortó la imagen. Si solo se capturó una foto esférica parcial, esta propiedad especifica el ancho que hubiera tenido la foto esférica completa. Consulta los diagramas anteriores. recorte: No hay cambios.
ajustar a escala: Debe ajustarse adecuadamente a su escala.
GPano:FullPanoHeightPixels Número entero N/A Altura completa original a partir de la cual se recortó la imagen. Si solo se capturó una foto esférica parcial, esta propiedad especifica la altura que hubiera tenido la foto esférica completa. Consulta los diagramas anteriores. recorte: No hay cambios.
ajustar a escala: Debe ajustarse adecuadamente a su escala.
GPano:CroppedAreaLeftPixels Número entero N/A Columna en la que el borde izquierdo de la imagen se recortó a partir de la foto esférica de tamaño completo. Consulta los diagramas anteriores. recortar: Si se modifica el recorte izquierdo de la imagen, se debe actualizar este valor.
ajustar a escala: Debe ajustarse adecuadamente.
GPano:CroppedAreaTopPixels Número entero N/A Fila en la que se recortó el borde superior de la imagen a partir de la foto esférica de tamaño completo. Consulta los diagramas anteriores. recortar: Si se cambia el recorte superior de la imagen, se debe actualizar este valor.
ajustar a escala: Debe ajustarse adecuadamente.
GPano:InitialCameraDolly Real No 0 Este parámetro opcional mueve la posición de la cámara virtual a lo largo de la línea de visión, lejos del centro de la foto esférica. Una posición superficial trasera se representa con el valor -1.0, mientras que la posición superficial delantera se representa con el valor 1.0. Para la visualización normal, este parámetro se debe establecer en 0. N/A

Ejemplo de una foto esférica completa

Los no programadores pueden agregar el siguiente ejemplo de metadatos a sus fotos completas existentes esferas (360 grados x 180 grados) con solo pequeñas modificaciones. Esto se puede realizar en productos de edición de imágenes, como Adobe Photoshop.

  1. cambia cualquier aparición de 4000 y 2000 para que coincida con el ancho y la altura correspondientes de tu imagen en píxeles
  2. actualiza PoseHeadingDegrees si deseas que Google Maps pueda mostrar tu foto esférica De lo contrario, tienes la opción de quitar este parámetro
  3. actualizar o quitar parámetros opcionales (como se indicó anteriormente)
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/">
    <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
    <GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware>
    <GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware>
    <GPano:ProjectionType>equirectangular</GPano:ProjectionType>
    <GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees>
    <GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees>
    <GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees>
    <GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees>
    <GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees>
    <GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels>
    <GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels>
    <GPano:CroppedAreaImageWidthPixels>4000</GPano:CroppedAreaImageWidthPixels>
    <GPano:CroppedAreaImageHeightPixels>2000</GPano:CroppedAreaImageHeightPixels>
    <GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels>
    <GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels>
    <GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate>
    <GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate>
    <GPano:SourcePhotosCount>50</GPano:SourcePhotosCount>
    <GPano:ExposureLockUsed>False</GPano:ExposureLockUsed>
</rdf:Description>

Ejemplo de una foto esférica parcial

<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/">
    <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
    <GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware>
    <GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware>
    <GPano:ProjectionType>equirectangular</GPano:ProjectionType>
    <GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees>
    <GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees>
    <GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees>
    <GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees>
    <GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees>
    <GPano:CroppedAreaLeftPixels>90</GPano:CroppedAreaLeftPixels>
    <GPano:CroppedAreaTopPixels>128</GPano:CroppedAreaTopPixels>
    <GPano:CroppedAreaImageWidthPixels>2300</GPano:CroppedAreaImageWidthPixels>
    <GPano:CroppedAreaImageHeightPixels>1042</GPano:CroppedAreaImageHeightPixels>
    <GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels>
    <GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels>
    <GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate>
    <GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate>
    <GPano:SourcePhotosCount>50</GPano:SourcePhotosCount>
    <GPano:ExposureLockUsed>False</GPano:ExposureLockUsed>
</rdf:Description>

Solidez para editar imágenes

Para ser sólidos, los programas que muestran fotos esféricas en un visor deben comprobar lo siguiente: una aplicación ajustó el tamaño de la foto esférica original sin actualizar metadatos. Esto se puede realizar en los siguientes pasos:

  1. asegúrate de que la etiqueta CroppedAreaImageWidthPixels sea igual al ancho real de la imagen
  2. asegúrate de que la etiqueta CroppedAreaImageHeightPixels sea igual a la altura real de la imagen
  3. Si el paso 1 o 2 falla, comprueba si se conservó la relación de aspecto de la imagen
  4. Si el paso 3 falla, no muestres la imagen como una foto esférica, ya que se transformó de una forma incompatible que podría generar distorsiones graves.
  5. Si se completa el paso 3, la relación de aspecto es equivalente y todos los valores de etiqueta asociados que se indican a continuación se deben escalar para adaptarse al nuevo tamaño de la imagen:
    CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels).

Descripción general de los ángulos de Euler

Euler define la orientación de la foto esférica en el marco del mundo. y diferentes ángulos. Los ángulos de Euler pueden definirse de diversas maneras. Para ser correctos, un programa debe cumplir que siguen las convenciones de los ángulos de Euler que se describen aquí.

La posición sobre la superficie de la Tierra define una dirección "local marco" XYZ, donde Z está arriba y ortogonal respecto de la superficie de la Tierra, X es el este verdadero e Y es el norte geográfico. La orientación se define en relación con esta “marco local” fijo, y los ángulos de Euler son rotaciones alrededor de estos en los ejes XYZ fijos. Por lo tanto, la orientación de la postura no está definida en los polos. Esta significa que una foto esférica con ángulos (0, 0, 0) se orientará de modo que pixela central se orienta hacia el norte, con el ecuador de la foto esférica paralelo a de la superficie de la Tierra.

Los ángulos de Euler proporcionan un mapeo de puntos en la “foto girada” (rotada) marco esfera" a puntos en el “marco local” (fijo):
 
Una matriz de rotación se construye a partir de ángulos de Euler de la siguiente manera: sigue (es importante conservar este orden):

R = R_Z(-heading) * R_X(pitch) * R_Y(roll)

donde: R_*(t) es una rotación hacia la derecha alrededor del eje nombrado:











donde: Z = Arriba, X = Este, Y = Norte.

Es importante mantener este orden:

R = R_Z(-heading) * R_X(pitch) * R_Y(roll)

ya que las rotaciones no son conmutativas.

Ten en cuenta que el ángulo de orientación es el mismo que la orientación estándar según la brújula.

Referencias

Estándar Adobe XMP: http://www.adobe.com/devnet/xmp.html