Metadati XMP delle foto sferiche

Lo spazio dei nomi per il panorama qui descritto contiene proprietà che forniscono informazioni sulla creazione e il rendering delle foto sferiche, inoltre a volte panoramiche, come a quelle create con la funzionalità Foto sferica della fotocamera di Android 4.2. La i metadati devono essere serializzati e incorporati nella foto sferica descritti dal Adobe XMP standard (consulta i riferimenti alla fine di questa pagina).

L'URI dello spazio dei nomi è http://ns.google.com/photos/1.0/panorama/

Proprietà dei metadati

I diagrammi e la tabella seguenti mostrano le proprietà delle foto sferiche incapsulate i parametri GPano. Quando modifichi e visualizzi le foto sferiche, assicurati di verificare e aggiornare i metadati di conseguenza, come descritto più avanti in questo documento. Quando specifichi i campi della posa e dell'intestazione iniziale, assicurati di seguire le convenzioni dell'angolo di Eulero discusse più avanti questo documento.

Tieni presente che i prodotti Google supportano solo le proiezioni sferiche. Al momento altre proiezioni sono supportate solo da altri soggetti.

Proiezioni sferiche

Proiezioni cilindriche

Tieni presente che se la parte superiore di un'immagine cilindrica si trova sopra l'orizzonte, RitagliapedAreaTopPixels deve essere un valore negativo. Un valore pari a 0 per RitagliapedAreaTopPixels posiziona la parte superiore dell'immagine all'orizzonte. Un valore positivo di RitagliapedAreaTopPixels posiziona la parte superiore dell'immagine sotto l'orizzonte.

Riferimento parametro GPano

Nome Tipo Obbligatorio Valore predefinito
(previsto dello spettatore)
Descrizione della struttura Azione richiesta in caso di modifica dell'immagine
GPano:UsePanoramaViewer Booleano No Vero Indica se mostrare questa immagine in un visualizzatore di foto sferiche anziché come una normale immagine piatta. Può essere specificato in base alle preferenze dell'utente o dal software di stitching. L'applicazione che mostra o importa l'immagine potrebbe scegliere di ignorare questo passaggio. scala/ritaglio:
nessuna variazione. Un'applicazione può decidere di impostare questo valore su False se il campo visivo è inferiore a un determinato valore.
GPano:CaptureSoftware Stringa No n/d Se l'acquisizione è stata effettuata utilizzando un'applicazione su un dispositivo mobile, ad esempio un telefono Android, il nome dell'applicazione utilizzata (ad esempio, "Foto sferica"). Deve essere lasciato vuoto se le immagini sorgente sono state acquisite manualmente, ad esempio utilizzando una fotocamera DSLR su un treppiede. n/d
GPano:StitchingSoftware Stringa No n/d Il software utilizzato per creare la foto sferica finale. A volte può essere lo stesso valore di GPano:CaptureSoftware. n/d
GPano:ProjectionType Apri scelta testo

equirettangolare

Tipo di proiezione utilizzato nel file immagine. Al momento i prodotti Google supportano solo il valore equirettangolare. scala/ritaglio: nessuna modifica.
GPano:PoseHeadingDegrees Reale No, ma è obbligatorio per la visualizzazione su Google Maps n/d Direzione della bussola, misurata in gradi in senso orario da nord, per il centro dell'immagine. Il valore deve essere >= 0 e < 360°. scala/ritaglio: nessuna modifica.
GPano:PosePitchDegrees Reale No 0 Inclinazione, misurata in gradi sopra l'orizzonte, per il centro dell'immagine. Il valore deve essere >= -90 e <= 90. scala/ritaglio: nessuna modifica.
GPano:PoseRollDegrees Reale No 0 Rotolo, misurato in gradi, dell'immagine dove il livello dell'orizzonte è 0. Con l'aumento della rotazione, l'orizzonte ruota in senso antiorario nell'immagine. Il valore deve essere > -180 e <= 180. scala/ritaglio: nessuna modifica.
GPano:InitialViewHeadingDegrees Numero intero No 0 L'angolo di prua della vista iniziale in gradi in senso orario dal nord del mondo reale, non rispetto al centro del panorama. scala/ritaglio: nessuna modifica.
GPano:InitialViewPitchDegrees Numero intero No 0 L'angolo di inclinazione della vista iniziale in gradi sopra l'orizzonte del mondo reale, non relativo al centro del panorama. scala/ritaglio: nessuna modifica.
GPano:InitialViewRollDegrees Numero intero No 0 L'angolo di rotazione della vista iniziale in gradi, con un livello con l'orizzonte del mondo reale pari a 0. Con l'aumento della rotazione, l'orizzonte ruota in senso antiorario nella visualizzazione. scala/ritaglio: nessuna modifica.
GPano:InitialHorizontalFOVDegrees Reale No n/d Il campo visivo orizzontale iniziale che lo spettatore deve visualizzare, in gradi. Questo livello è simile a un livello di zoom. n/d
GPano:InitialVerticalFOVDegrees Reale No n/d Il campo visivo verticale iniziale che lo spettatore deve visualizzare (in gradi). Questo livello è simile a un livello di zoom. Se sono presenti sia GPano:InitialHorizontalFOVDegrees che GPano:InitialVerticalFOVDegrees, GPano:InitialHorizontalFOVDegrees ha la precedenza. Utilizza solo InitialFOVDegrees se i tuoi contenuti devono essere visualizzati in più proporzioni e preferisci che il campo visivo verticale rimanga costante mentre il campo visivo orizzontale potrebbe cambiare. Al momento i prodotti Google non supportano questo campo. n/d
GPano:FirstPhotoDate Data No n/d Data e ora della prima immagine creata nella foto sferica. scala/ritaglio: nessuna modifica.
GPano:LastPhotoDate Data No n/d Data e ora dell'ultima immagine creata nella foto sferica. scala/ritaglio: nessuna modifica.
GPano:SourcePhotosCount Numero intero No n/d Numero di immagini di origine utilizzate per creare la foto sferica. scala/ritaglio: nessuna modifica.
GPano:ExposureLockUsed Booleano No n/d Quando sono state scattate singole fotografie, indipendentemente dal fatto che l'impostazione di esposizione della fotocamera fosse bloccata o meno. n/d
GPano:CroppedAreaImageWidthPixels Numero intero n/d La larghezza originale in pixel dell'immagine (uguale a quella effettiva per le immagini non modificate). Vedi i diagrammi sopra. scala/ritaglio: questa proprietà deve essere aggiornata per riflettere le nuove dimensioni dell'immagine.
GPano:CroppedAreaImageHeightPixels Numero intero n/d Altezza originale in pixel dell'immagine (uguale all'altezza effettiva dell'immagine per le immagini non modificate). Vedi i diagrammi sopra. scala/ritaglio: questa proprietà deve essere aggiornata per riflettere le nuove dimensioni dell'immagine.
GPano:FullPanoWidthPixels Numero intero n/d Larghezza originale originale da cui è stata ritagliata l'immagine. Se venisse scattata solo una foto sferica parziale, questa specifica la larghezza di quella che sarebbe stata l'intera foto sferica. Vedi i diagrammi sopra. ritaglio: nessuna modifica.
scala: questa scala deve essere ridimensionata correttamente.
GPano:FullPanoHeightPixels Numero intero n/d Altezza originale originale da cui è stata ritagliata l'immagine. Se fosse stata scattata solo una foto sferica parziale, questa specifica l'altezza di quella che sarebbe stata l'intera foto sferica. Vedi i diagrammi sopra. ritaglio: nessuna modifica.
scala: questa scala deve essere ridimensionata correttamente.
GPano:CroppedAreaLeftPixels Numero intero n/d Colonna in cui il bordo sinistro dell'immagine è stato ritagliato dalla foto sferica a grandezza originale. Vedi i diagrammi sopra. ritaglio: se viene modificato il ritaglio a sinistra dell'immagine, questo valore deve essere aggiornato.
scala: deve essere ridimensionato correttamente.
GPano:CroppedAreaTopPixels Numero intero n/d Riga in cui il bordo superiore dell'immagine è stato ritagliato dalla foto sferica a grandezza originale. Vedi i diagrammi sopra. ritaglio: se il ritaglio superiore dell'immagine viene modificato, questo valore deve essere aggiornato.
scala: deve essere ridimensionato correttamente.
GPano:InitialCameraDolly Reale No 0 Questo parametro facoltativo sposta la posizione della fotocamera virtuale lungo la linea visiva, lontano dal centro della foto sferica. La posizione della superficie posteriore è rappresentata dal valore -1,0, mentre la posizione della superficie anteriore è rappresentata da 1,0. Per una visualizzazione normale, questo parametro deve essere impostato su 0. n/d

Esempio di foto sferica completa

I non programmatori possono aggiungere l'esempio di metadati riportato di seguito alla foto intera esistente sfere (360 gradi x 180 gradi) con solo piccole modifiche. Questo può essere fatto nei prodotti per la modifica di immagini, come Adobe Photoshop.

  1. modifica le occorrenze di 4000 e 2000 in modo che corrispondano alla larghezza e all'altezza dell'immagine in pixel corrispondenti
  2. aggiorna PoseHeadingDegrees se vuoi che Google Maps mostri la tua foto sferica; altrimenti puoi rimuovere questo parametro
  3. Aggiornare o rimuovere i parametri facoltativi (come elencato sopra)
<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>

Esempio di foto sferica parziale

<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>

Robustezza alla modifica delle immagini

Per essere efficaci, i programmi che mostrano foto sferiche devono controllare se la foto sferica originale è stata ridimensionata da un'applicazione senza aggiornare la metadati. Questa operazione può essere eseguita nei seguenti passaggi:

  1. assicurati che il tag RitagliapedAreaImageLarghezzaPixels sia uguale alla larghezza effettiva dell'immagine
  2. assicurati che il tag RitagliapedAreaImageHeightPixels corrisponda all'altezza effettiva dell'immagine
  3. Se il passaggio 1 o 2 ha esito negativo, controlla se le proporzioni dell'immagine sono state mantenute.
  4. Se il passaggio 3 non funziona, non visualizzare l'immagine come foto sferica poiché è stata trasformata in un modo incompatibile che introdurrà distorsioni errate.
  5. Se viene superato il passaggio 3, le proporzioni sono equivalenti e tutti i seguenti valori dei tag associati devono essere ridimensionati per adattarsi alle nuove dimensioni dell'immagine:
    RitagliataAreaImmagineLarghezzaPixel, AreaRitagliataImmagineAltezzaPixel, LarghezzaPano InteraPixel, FullPanoHeightPixel, RitagliataAreaSiniPixel, RitagliataAreaDestraPixel.

Panoramica degli angoli di Eulero

L'orientamento della foto sferica nel frame globale è definito da Eulero angolari. Gli angoli di Eulero possono essere definiti in molti modi. Per essere corretta, un programma deve rigorosamente seguire le convenzioni di Eulero descritte qui.

La posizione sopra la superficie terrestre definisce un valore fisso frame" XYZ, dove Z è in alto e ortogonale alla superficie terrestre, X è vero est e Y è vero nord. L'orientamento è definito relativo a questo fissi "local frame" e gli angoli di Eulero sono rotazioni attorno a questi assi XYZ fissi. Di conseguenza, l'orientamento delle pose non è definito ai poli. Questo significa che una foto sferica con angoli (0, 0, 0) sarà orientata in modo tale che il pixel centrale è rivolto verso nord con l'equatore della foto sferica parallela alla sulla superficie terrestre.

Gli angoli di Eulero forniscono una mappatura dai punti nella "foto" (ruotata) cornice sferica" in punti nel "frame locale" (fisso):
 
Una matrice di rotazione viene creata dagli angoli di Eulero come (è importante mantenere questo ordinamento):

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

dove: R_*(t) è una rotazione destrimanta attorno all'asse denominato:











e dove: Z = verso l'alto, X = est, Y = nord.

È importante mantenere questo ordinamento:

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

poiché le rotazioni non sono commutative.

Tieni presente che l'angolo di orientamento è uguale a quello di una bussola standard.

Riferimenti

Standard Adobe XMP: http://www.adobe.com/devnet/xmp.html