Metadati XMP foto sferiche

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Lo spazio dei nomi panoramica descritto qui contiene proprietà che forniscono informazioni sulla creazione e sul rendering di foto sferiche, dette anche panoramiche, come quelle create dalla funzionalità Foto sferica nella fotocamera Android 4.2. I metadati devono essere serializzati e incorporati all'interno della foto sferica, come descritto dallo standard Adobe XMP (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 dai parametri GPano. Quando modifichi e visualizzi foto sferiche, assicurati di verificare e aggiornare i metadati di conseguenza, come illustrato più avanti in questo documento. Quando specifichi i campi della posa e dell'intestazione iniziale, assicurati di seguire le convenzioni dell'angolo di Euler descritte più avanti in questo documento.

Tieni presente che i prodotti Google supportano solo le proiezioni sferiche. Le proiezioni aggiuntive sono attualmente supportate solo da altre parti.

Proiezioni sferiche

Proiezioni cilindrica

Tieni presente che se la parte superiore di un'immagine cilindrica è al di sopra dell'orizzonte, CroppAreaTopPixel deve essere negativo. Se il valore è 0 per CroppedAreaTopPixels, viene posizionata all'orizzonte la parte superiore dell'immagine. Un valore positivo di CroppedAreaTopPixels posiziona la parte superiore dell'immagine sotto l'orizzonte.

Riferimento per i parametri GPano

Nome Tipo Obbligatorio Valore predefinito
(presunto visualizzatore)
Descrizione della proprietà Azione richiesta se l'immagine è modificata
GPano:UsePanoramaViewer Booleano No vero Indica se mostrare questa immagine in un visualizzatore di foto sferiche anziché come una normale immagine piatta. Questa impostazione può essere specificata in base alle preferenze dell'utente o dal software di stitching. L'applicazione che visualizza o importa l'immagine potrebbe scegliere di ignorarla. scale/crop:
nessuna modifica. Un'applicazione può decidere di impostarla su Falso se il campo visivo è inferiore a un determinato valore.
GPano:CaptureSoftware Stringa No n/d Se l'acquisizione è stata effettuata mediante un'applicazione su un dispositivo mobile, ad esempio un telefono Android, il nome dell'applicazione utilizzata (ad esempio "Foto sferica"). Questo campo deve essere lasciato vuoto se le immagini di origine 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. Talvolta può corrispondere allo stesso valore di GPano:CaptureSoftware. n/d
GPano:Tipo di progetto Apri la scelta del testo

equirettangolare

Tipo di proiezione utilizzato nel file immagine. Attualmente i prodotti Google supportano solo il valore equirettangolare. scale/crop: nessuna modifica.
GPano:PoseHeaderDegrads Esiste No, ma è obbligatorio per essere visualizzato su Google Maps n/d Intestazione della bussola, misurata in gradi in senso orario da nord, al centro dell'immagine. Il valore deve essere >= 0 e < 360. scale/crop: nessuna modifica.
GPano:PosePitchDegrads Esiste No 0 Tono, misurato in gradi sopra l'orizzonte, per il centro dell'immagine. Il valore deve essere >= -90 e <= 90. scale/crop: nessuna modifica.
GPano:PoseRollDegrades Esiste No 0 Rullo, misurato in gradi, dell'immagine dove il livello dell'orizzonte è 0. Man mano che il rullo aumenta, l'orizzonte ruota in senso antiorario nell'immagine. Il valore deve essere > -180 e <= 180. scale/crop: nessuna modifica.
GPano:InitialViewHeaderDecenti Numero intero No 0 L'angolo di intestazione della vista iniziale in gradi in senso orario dal nord del mondo reale, non relativo al centro del panorama. scale/crop: nessuna modifica.
GPano:InitialViewPitchDegrads Numero intero No 0 L'angolazione della vista iniziale in gradi sopra l'orizzonte del mondo reale, non rispetto al centro del panorama. scale/crop: nessuna modifica.
GPano:InitialViewRollDegrads Numero intero No 0 L'angolo di rotolamento della vista iniziale in gradi, dove il livello dell'orizzonte reale è pari a 0. All'aumentare del rullo, l'orizzonte ruota in senso antiorario nella visualizzazione. scale/crop: nessuna modifica.
GPano:InizialiorizzontaliFOV iniziali Esiste No n/d Il campo visivo orizzontale iniziale che lo spettatore deve mostrare (in gradi). Ciò è simile a un livello di zoom. n/d
GPano:InizialeVerticaleFOVGradi Esiste No n/d Il campo visivo iniziale che lo spettatore deve visualizzare (in gradi). Ciò è simile a un livello di zoom. Se sono presenti entrambi i GPano:InizialiorifondiFOVGradi e GPano:InizialiVerticalFOFODecenti presenti, GPano:InizialeorizzoFOVDegradi ha la precedenza. Utilizza solo InitialVerticalFOVDegrades se i tuoi contenuti devono essere visualizzati in diverse proporzioni e preferisci che il campo visivo verticale rimanga costante mentre il campo visivo orizzontale può cambiare. Al momento, i prodotti Google non supportano questo campo. n/d
GPano:PrimoFotoData Data No n/d Data e ora della prima immagine creata nella foto sferica. scale/crop: nessuna modifica.
GPano:UltimaFotoData Data No n/d Data e ora dell'ultima immagine creata nella foto sferica. scale/crop: nessuna modifica.
GPano:SourcePhotosCount Numero intero No n/d Numero di immagini sorgente utilizzate per creare la foto sferica. scale/crop: nessuna modifica.
GPano:EsposizioneLockUsed Booleano No n/d Quando sono state scattate le fotografie di origine, se l'impostazione di esposizione della fotocamera è stata bloccata o meno. n/d
GPano:RitagliatoAreaImmaginePixel Numero intero n/d Larghezza originale in pixel dell'immagine (uguale alla larghezza dell'immagine effettiva per le immagini non modificate). Vedi i diagrammi precedenti. scale/crop: questa proprietà deve essere aggiornata in modo da riflettere le nuove dimensioni dell'immagine.
GPano:RitagliatoAreaImmagineAltezzaPixel Numero intero n/d Altezza originale in pixel dell'immagine (uguale all'altezza dell'immagine effettiva per le immagini non modificate). Vedi i diagrammi precedenti. scale/crop: questa proprietà deve essere aggiornata in modo da riflettere le nuove dimensioni dell'immagine.
GPano:FullPanoWidthPixels Numero intero n/d Larghezza intera originale da cui è stata ritagliata l'immagine. Se è stata scattata solo una foto sferica parziale, questa specifica la larghezza di quella che sarebbe stata l'intera foto sferica. Vedi i diagrammi precedenti. ritaglia: nessuna modifica.
scala: deve essere scalata correttamente.
GPano:FullPanoHeightPixels Numero intero n/d Altezza originale originale da cui è stata ritagliata l'immagine. Se è stata scattata solo una foto sferica parziale, ne verrà specificata l'altezza che sarebbe stata. Vedi i diagrammi precedenti. ritaglia: nessuna modifica.
scala: deve essere scalata 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 precedenti. ritaglia: se il ritaglio a sinistra dell'immagine viene modificato, 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 precedenti. ritaglio: se il ritaglio superiore dell'immagine viene modificato, questo valore deve essere aggiornato.
scala: deve essere ridimensionato correttamente.
GPano:inizialefotocamera Esiste 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 è indicata da 1,0. Per la visualizzazione normale, questo parametro deve essere impostato su 0. n/d

Esempio di foto sferica completa

Chi non è un programmatore può aggiungere l'esempio di metadati riportato di seguito alle proprie foto sferiche complete (360 x 180 gradi) apportando solo piccole modifiche. Puoi farlo utilizzando 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 corrispondenti dell'immagine in pixel
  2. aggiorna PoseIntestazioneDecenti se vuoi che Google Maps sia in grado di mostrare la tua foto sferica; altrimenti puoi facoltativamente rimuovere questo parametro
  3. aggiornare o rimuovere i parametri facoltativi (come indicato 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 della modifica delle immagini

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

  1. assicurati che il tag CropdAreaImageWidthPixel sia uguale alla larghezza effettiva dell'immagine
  2. assicurati che il tag CropdAreaImageHeightPixels sia uguale all'altezza effettiva dell'immagine
  3. se il passaggio 1 o 2 non riesce, controlla se le proporzioni dell'immagine sono state conservate
  4. se il passaggio 3 ha esito negativo, non visualizzare l'immagine come una foto sferica poiché è stata trasformata in modo incompatibile che presenterà distorsioni errate
  5. se viene superato il passaggio 3, le proporzioni sono equivalenti e tutti i seguenti valori di tag associati devono essere ridimensionati per adattarsi alle nuove dimensioni dell'immagine:
    CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels.

Panoramica degli angoli di Euler

L'orientamento della foto sferica nel frame del mondo è definito dagli angoli di Euler. Gli angoli di eulazione possono essere definiti in molti modi. Per essere corretto, un programma deve seguire rigorosamente le convenzioni angolari di Euler descritte qui.

La posizione sopra la superficie terrestre definisce un "frame locale" XYZ, dove Z è in alto ed ortogonale alla superficie terrestre, X è vera est e Y è vero nord. L'orientamento è definito rispetto a questo "frame locale" fisso e gli angoli di Euler sono rotazioni attorno a questi assi fissi XYZ. L'orientamento della posizione non è quindi definito ai poli. Ciò significa che una foto sferica con angoli (0, 0 e 0) sarà orientata in modo tale che il pixel centrale sia rivolto verso nord con l'equatore della foto sferica parallela alla superficie terrestre.

Gli angoli di Eulero forniscono una mappatura dai punti nella "fotocamera sferica" (rotata) ai punti nella "cornice locale" (fissa) e:

Viene creata una matrice di rotazione dagli angoli di Euler come segue (è importante mantenere questo ordine):

R = R_Z(-intestazione) * R_X(tono) * R_Y(rotolo)

dove: R_*(t) è una rotazione verso destra attorno all'asse con nome:

R_Z(angolo) = [ cos(angolo), -sin(angolo), 0
0, (1) (0)

e dove: Z = Su, X = Est, Y = Nord.

È importante rispettare questo ordine:

R = R_Z(-intestazione) * R_X(tono) * R_Y(rotolo)

poiché le rotazioni non sono commutative.

Tieni presente che l'angolo di intestazione corrisponde a quello della bussola standard.

Riferimenti

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