El espacio de nombres panorámico descrito aquí contiene propiedades que proporcionan información sobre la creación y el procesamiento de fotos esféricas, también conocidas como panorámicas, como las creadas por la función Foto esférica en la cámara de Android 4.2. Los metadatos deben estar serializados e incorporados en la foto esférica como se describe en el estándar 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. Cuando edites y visualices fotos esféricas, asegúrate de verificar y actualizar los metadatos como se describe más adelante en este documento. Cuando especifiques los campos de pose y de encabezado inicial, asegúrate de seguir las Convenciones de los ángulos de Euler que se analizan más adelante en este documento.
Ten en cuenta que los productos de Google solo son compatibles con las proyecciones esféricas. En este momento, solo las otras partes admiten las 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 de GPano
Nombre | Tipo | Obligatorio | Valor predeterminado (se supone que es el visor) |
Descripción de la propiedad | Acción obligatoria si se modifica la imagen |
---|---|---|---|---|---|
GPano:UtilizarPanoramaViewer | Booleano | No | Verdadero | Indica si se 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 ignorarla. | scale/crop: No hay cambios. Una aplicación puede decidir cambiar esto a False si el campo de visión es inferior a un valor determinado. |
GPano:Software de captura | 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ó (como "Photo Sphere"). Se debe dejar en blanco si las imágenes de origen se capturaron manualmente, por ejemplo, mediante una cámara réflex digital sobre un trípode. | N/A |
GPano:Software de costura | String | No | N/A | El software que se usó para crear la foto esférica final. En ocasiones, puede ser el mismo valor que el de GPT:CaptureSoftware. | N/A |
GPano:Tipo de proyecto | Abrir elección de texto | Sí |
equirrectangular |
Tipo de proyección usado en el archivo de imagen. Actualmente, los productos de Google solo admiten el valor equirrectangular. | scale/crop: Sin cambios. |
GPano:PoseHeadingDegrees | Real | No, pero es obligatorio para mostrarla en Google Maps | N/A | Brújula, medida en grados en sentido horario, partiendo del norte, para el centro de la imagen. El valor debe ser >= 0 y < 360. | scale/crop: Sin cambios. |
GPano:PosePresentación | Real | No | 0 | Pitch, medido en grados sobre el horizonte, para el centro de la imagen. El valor debe ser >= -90 y <= 90. | scale/crop: Sin cambios. |
GPano:Títulos de pose | Real | No | 0 | Balanceo de la imagen, medido en grados, donde el nivel con el horizonte es 0. A medida que aumenta la imagen, el horizonte gira en sentido antihorario en la imagen. El valor debe ser > -180 y <= 180. | scale/crop: Sin cambios. |
GPano:InitialViewHeadingDegrees | Integer | No | 0 | El ángulo de orientación de la vista inicial en grados en sentido horario, partiendo del norte real, no relacionado con el centro de la panorámica. | scale/crop: Sin cambios. |
GPano:Grados iniciales de la presentación | Integer | No | 0 | El ángulo de inclinación de la vista inicial en grados sobre el horizonte del mundo real, no con respecto al centro de la panorámica. | scale/crop: Sin cambios. |
GPano:Grado inicial | Integer | No | 0 | El ángulo de balanceo de la vista inicial en grados donde el nivel con el horizonte del mundo real es 0. A medida que aumenta la rotación, el horizonte gira en sentido antihorario en la vista. | scale/crop: Sin cambios. |
GPano:Grados iniciales de la horizontal | Real | No | N/A | El campo visual horizontal inicial que el visor debe mostrar (en grados). Esto es similar a un nivel de zoom. | N/A |
GPano:Grados inicialesFOV | Real | No | N/A | El campo de visión vertical inicial que el espectador debe mostrar (en grados). Esto es similar a un nivel de zoom. Si están presentes tanto GPano:InitialHorizontalFOVDegrees como GPano:InitialVerticalFOVDegrees, GPano:InitialHorizontalFOVDegrees tiene prioridad. Usa solo InitialVerticalFOVDegrees si tu contenido se mostrará en varias relaciones de aspecto y prefieres que el campo de visión vertical se mantenga constante mientras el campo de visión horizontal puede cambiar. Actualmente, los productos de Google no admiten este campo. | N/A |
GPano:Fecha de la primera foto | Fecha | No | N/A | Fecha y hora de la primera imagen creada en la foto esférica. | scale/crop: Sin cambios. |
GPano:Última foto | Fecha | No | N/A | Fecha y hora de la última imagen creada en la foto esférica. | scale/crop: Sin cambios. |
GPano:SourcePhotosCount | Integer | No | N/A | Cantidad de imágenes de origen que se utilizan para crear la foto esférica. | scale/crop: Sin cambios. |
GPano:Bloqueo de exposición usado | Booleano | No | N/A | Cuando se tomaron fotos de origen individuales, indica si se bloqueó o no la configuración de exposición de la cámara. | N/A |
GPano:El área recortada es una imagen de ancho de píxeles | Integer | Sí | N/A | Ancho original en píxeles de la imagen (igual al ancho real de la imagen para las imágenes sin editar) Consulta los diagramas anteriores. | Escala o recorte: Esta propiedad debe actualizarse para que refleje el nuevo tamaño de la imagen. |
GPano:Área recortada de imagen | Integer | Sí | N/A | 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 o recorte: Esta propiedad debe actualizarse para que refleje el nuevo tamaño de la imagen. |
GPano:píxeles de ancho total | Integer | Sí | 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: sin cambios. ajustar a escala: se debe ajustar la escala correctamente. |
GPano:PixelsFullPanoHeight | Integer | Sí | 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: sin cambios. ajustar a escala: se debe ajustar la escala correctamente. |
GPano:píxel de área recortada | Integer | Sí | 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. | recorte: Si se cambia el recorte izquierdo de la imagen, se debe actualizar este valor. ajustar a escala: Se debe ajustar correctamente la escala. |
GPano:píxel de área recortada | Integer | Sí | N/A | Fila en la que el borde superior de la imagen se recortó a partir de la foto esférica de tamaño completo. Consulta los diagramas anteriores. | recorte: Si se cambia el recorte superior de la imagen, se debe actualizar este valor. ajustar a escala: Se debe ajustar correctamente la escala. |
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. La 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 debe establecerse en 0. | N/A |
Ejemplo de una foto esférica completa
Los no programadores pueden agregar el siguiente ejemplo de metadatos a sus fotos esféricas completas existentes (360 grados x 180 grados) solo con pequeñas modificaciones. Esto se puede realizar en productos de edición de imágenes, como Adobe Photoshop.
- cambia los casos de 4000 y 2000 para que coincidan con el ancho y la altura correspondientes de tu imagen en píxeles
- actualizar PoseHeadingDegrees si deseas que Google Maps pueda mostrar la foto esférica; de lo contrario, puedes eliminar este parámetro
- actualizar o quitar parámetros opcionales (como se indica arriba)
<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 la edición de imágenes
Para ser sólidos, los programas que muestran fotos esféricas en un visor deben comprobar si una aplicación escaló la foto esférica original sin actualizar los metadatos. Esto se puede realizar en los siguientes pasos:
- Asegúrese de que la etiqueta CroppedAreaImageWidthPixels sea equivalente al ancho real de la imagen
- Asegúrate de que la etiqueta CroppedAreaImageHeightPixels sea equivalente a la altura real de la imagen
- Si los pasos 1 o 2 fallan, comprueba si se conservó la proporción de la imagen.
- Si el paso 3 falla, no muestres la imagen como una foto esférica, ya que se transformó de una manera incompatible que introducirá malas distorsiones.
- Si se realiza 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 ajustar para que se adapten al nuevo tamaño de la imagen:
CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels.
Descripción general de los ángulos de Euler
La orientación de la foto esférica en el marco del mundo está definida por ángulos de Euler. Los ángulos de Euler pueden definirse de diversas maneras. Para ser correctos, un programa debe seguir estrictamente las convenciones de los ángulos de Euler que se describen aquí.
La posición sobre la superficie de la Tierra define un marco local y fijo XYZ, en el que Z es hacia arriba y ortogonal a la superficie de la Tierra, X es el este verdadero e Y es el norte verdadero. La orientación se define en relación con este marco fijo local, y los ángulos de Euler son rotaciones alrededor de estos ejes XYZ fijos. Por lo tanto, la orientación de la pose es indefinida en los polos. Esto significa que una foto esférica con ángulos (0, 0, 0) se orientará de modo que el píxel central apunte hacia el norte con el Ecuador de la foto esférica paralelo a la superficie de la Tierra.
Los ángulos de Euler proporcionan una asignación desde puntos en el marco de la foto esférica (rotada) hasta los puntos en el marco (fijo) local:
Una matriz de rotación se construye a partir de ángulos de Euler de la siguiente manera (es importante preservar 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:
E
en la que Z = Arriba, X = Este, Y = Norte.
Es importante conservar 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 el estándar.
Referencias
Estándar de Adobe XMP: http://www.adobe.com/devnet/xmp.html