Metadane XMP zdjęcia sferycznego

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Otwarta przestrzeń nazw zawiera właściwości, które dostarczają informacje o tworzeniu i renderowaniu zdjęć sferycznych, nazywanych też „panoramami”, takich jak zdjęcia sferyczne utworzone za pomocą aparatu w Androidzie 4.2. Metadane powinny być zserializowane i umieszczone wewnątrz zdjęcia sferycznego zgodnie ze standardem Adobe XMP (zobacz materiały referencyjne na końcu tej strony).

Identyfikator URI przestrzeni nazw to http://ns.google.com/photos/1.0/panorama/

Właściwości metadanych

Diagramy i tabela poniżej pokazują właściwości zdjęcia sferycznego zawarte w parametrach GPano. Podczas edytowania i wyświetlania zdjęć sferycznych sprawdź i zaktualizuj metadane zgodnie z opisem w dalszej części tego dokumentu. Wskazanie pól pozycji i początkowego nagłówka musi być zgodne ze konwencjami kąta kształtu omówionymi później w tym dokumencie.

Pamiętaj, że produkty Google obsługują tylko projekcje sferyczne. Dodatkowe prognozy są obecnie obsługiwane tylko przez inne strony.

Projekcje sferyczne

Odwzorowania cylindryczne

Pamiętaj, że jeśli u góry obrazu cylindrycznego znajduje się ponad horyzontem, piksele CropAreaTopPixels muszą być ujemne. Wartość 0 w przypadku przycinania w postaci przycięcia Pixele spowoduje umieszczenie górnej części obrazu na horyzoncie. W przypadku CropeAreaTopPixels u góry poniżej horyzontu znajduje się wartość dodatnia.

Odwołanie do parametrów GPano

Nazwa Typ Wymagany Wartość domyślna
(założenie: widz)
Opis właściwości Wymagane zmiany w przypadku zmodyfikowania obrazu
GPano:Korzystanie z panoramy Wartość logiczna Nie Prawda Określa, czy obraz ma być wyświetlany w przeglądarce zdjęć sferycznych, a nie jako zwykły płaski. Można to określić na podstawie preferencji użytkownika lub oprogramowania do łączenia zdjęć. Aplikacja, która wyświetla lub przetwarza obraz, może zignorować tę opcję. scale/crop:
Bez zmian. Aplikacja może zmienić to ustawienie na Fałsz, jeśli pole widzenia spadnie poniżej określonej wartości.
GPano:Oprogramowanie do przechwytywania Ciąg znaków Nie Nie dotyczy Jeśli zdjęcia zostały zrobione przy użyciu aplikacji na urządzeniu mobilnym, takiej jak telefon z Androidem, nazwa użytej aplikacji (np. „Zdjęcie sferyczne”). To pole należy pozostawić puste, jeśli zdjęcia źródłowe zostały zrobione ręcznie, np. przez użycie lustrzanki cyfrowej na statywie. Nie dotyczy
GPano:Oprogramowanie do szycia Ciąg znaków Nie Nie dotyczy Oprogramowanie użyte do utworzenia ostatecznego zdjęcia sferycznego. Ta wartość może czasami być taka sama jak wartość GPano:CaptureSoftware. Nie dotyczy
GPano:Typ wyświetlania Otwórz dowolny tekst Tak

prostokąt

Typ wyświetlania używany w pliku obrazu. Usługi Google obsługują obecnie tylko wartość walcową równoodległościową. skalowanie/przycinanie: bez zmian.
GPano:stopnie nagłówka Real Nie, ale jest wymagana do wyświetlania w Mapach Google Nie dotyczy Nagłówek kompasu mierzony w stopniach w kierunku północnym z północy i na środku obrazu. Musi to być >= 0 i < 360. skalowanie/przycinanie: bez zmian.
GPano:PoseFitche Real Nie 0 Oś środka obrazu jest mierzona w stopniach nad horyzontem. Wartość musi wynosić >= -90 i <= 90. skalowanie/przycinanie: bez zmian.
GPano:PoseRollDegrees Real Nie 0 Obrót obrazu, wyrażony w stopniach, na którym poziom horyzontu wynosi 0. Gdy rolka się powiększa, horyzont zmienia się w lewo na obrazie. Wartość musi wynosić > -180 i <= 180. skalowanie/przycinanie: bez zmian.
GPano:Początkowe widoki Kierowania Liczba całkowita Nie 0 Kąt nachylenia widoku początkowego w stopniach w prawo od kierunku północnego, a nie w porównaniu do środka panoramicznego. skalowanie/przycinanie: bez zmian.
GPano:WstępnyPitchDegrees Liczba całkowita Nie 0 Kąt nachylenia początkowego widoku w stopniach nad prawdziwym horyzontem, a nie w odniesieniu do środka panoramicznego. skalowanie/przycinanie: bez zmian.
GPano:Początkowe widokiRollDegrees Liczba całkowita Nie 0 Kąt nachylenia początkowego widoku w stopniach, w którym poziom w rzeczywistym horyzoncie wynosi 0. Gdy rolka się powiększa, horyzont zmienia się w kierunku przeciwnym do ruchu wskazówek zegara. skalowanie/przycinanie: bez zmian.
GPano:PoczątkowepoziomyFOVD Real Nie Nie dotyczy Początkowe poziome pole widzenia, które użytkownik powinien wyświetlić (w stopniach). Jest to podobne do poziomu powiększenia. Nie dotyczy
GPano:Początkowa branżaFOVD Real Nie Nie dotyczy Początkowe pole widzenia w pionie, które użytkownik powinien wyświetlić (w stopniach). Jest to podobne do poziomu powiększenia. Jeśli występuje zarówno GPano:InitialHorizontalFOVDegrees, jak i GPano:InitialVerticalFOVDegrees, pierwszeństwo ma GPano:InitialHorizontalFOVDegrees. Korzystaj z tego ustawienia tylko wtedy, gdy treści mają wyświetlać się w wielu formatach obrazu i chcesz, aby pole widzenia pozostawały stałe, a poziome pole widzenia może się zmieniać. Usługi Google obecnie nie obsługują tego pola. Nie dotyczy
GPano:DataPierwszegozdjęcia Data Nie Nie dotyczy Data i godzina utworzenia pierwszego zdjęcia sferycznego. skalowanie/przycinanie: bez zmian.
GPano:Data ostatniego zdjęcia Data Nie Nie dotyczy Data i godzina utworzenia ostatniego zdjęcia sferycznego. skalowanie/przycinanie: bez zmian.
GPano:Liczbaźródła_zdjęć Liczba całkowita Nie Nie dotyczy Liczba obrazów źródłowych użytych do utworzenia zdjęcia sferycznego. skalowanie/przycinanie: bez zmian.
GPano:Blokada blokady Wartość logiczna Nie Nie dotyczy gdy robiono poszczególne zdjęcia źródłowe, niezależnie od tego, czy ustawienie ekspozycji w aparacie było zablokowane; Nie dotyczy
GPano:Przycinane piksele szerokości Liczba całkowita Tak Nie dotyczy Oryginalna szerokość obrazu w pikselach (równa szerokości rzeczywistej grafiki). Diagramy znajdziesz powyżej. skalę/Przytnij: musisz zaktualizować tę właściwość, aby odzwierciedlała nowy rozmiar obrazu.
GPano:Przycinające piksele – obszar górny Liczba całkowita Tak Nie dotyczy pierwotna wysokość obrazu w pikselach (w przypadku obrazów bez edycji równa wysokości rzeczywistego obrazu). Diagramy znajdziesz powyżej. skalę/Przytnij: musisz zaktualizować tę właściwość, aby odzwierciedlała nowy rozmiar obrazu.
GPano:Pełna szerokość pikseli Liczba całkowita Tak Nie dotyczy Oryginalna pełna szerokość, z której obraz został przycięty. Jeśli zrobiono tylko częściowe zdjęcie sferyczne, określa to, jaka byłaby wartość pełnej zdjęcia sferycznego. Diagramy znajdziesz powyżej. przycięcie: brak zmian.
skala: musi zostać odpowiednio przeskalowana
GPano:Piksele pełnej wysokości pikseli Liczba całkowita Tak Nie dotyczy Oryginalna pełna wysokość, z której obraz został przycięty. Jeśli zostało zrobione tylko częściowe zdjęcie sferyczne, ta wartość określa wysokość, jaką miałaby pełne zdjęcie sferyczne. Diagramy znajdziesz powyżej. przycięcie: brak zmian.
skala: musi zostać odpowiednio przeskalowana
GPano:Przycinające terenyporzucone Liczba całkowita Tak Nie dotyczy Kolumna, w przypadku której przycięcie lewej krawędzi obrazu jest spowodowane pełnowymiarowym zdjęciem sferycznym. Diagramy znajdziesz powyżej. przycięcie: jeśli zmieni się lewe przycięcie obrazu, musisz zaktualizować tę wartość.
skala: to ustawienie należy odpowiednio przeskalować.
GPano:Przycinające terenyPixelPad Liczba całkowita Tak Nie dotyczy Wiersz, w którym przycięcie górnej krawędzi obrazu z pełnowymiarowego zdjęcia sferycznego. Diagramy znajdziesz powyżej. przycięcie: jeśli zmieni się górne przycięcie obrazu, należy zaktualizować tę wartość.
Skalowanie: odpowiednie skalowanie.
GPano:Początkowa kamera Real Nie 0 Ten opcjonalny parametr pozwala przesunąć kamerę wirtualną wzdłuż linii pola widzenia, z dala od środka zdjęcia sferycznego. Pozycja tylnej powierzchni jest reprezentowana przez wartość -1,0, a przednia pozycja – przez 1,0. W przypadku normalnego wyświetlania ten parametr powinien mieć wartość 0. Nie dotyczy

Przykład zdjęcia sferycznego

Użytkownicy, którzy nie sąprogramistami, mogą dodać poniższy przykład metadanych do istniejących pełnych zdjęć sferycznych (360 x 180 stopni) przy niewielkich zmianach. Możesz to zrobić w usługach do edycji obrazów, np. w Adobe Photoshop.

  1. zmień wszystkie wystąpienia wartości 4000 i 2000, aby pasowały do odpowiedniej szerokości i wysokości obrazu (w pikselach).
  2. zaktualizuj PoseHeadingDegrees, jeśli chcesz, by Twoje zdjęcie sferyczne było wyświetlane w Mapach Google; w przeciwnym razie możesz opcjonalnie usunąć ten parametr
  3. Aktualizowanie lub usuwanie parametrów opcjonalnych (jak podano powyżej)
<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>

Przykład części zdjęcia sferycznego

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

Niezawodność edycji obrazu

Niezawodnie programy wyświetlające zdjęcia sferyczne powinny sprawdzać, czy pierwotna sfera fotograficzna została przeskalowana przez aplikację bez aktualizowania metadanych. Aby to zrobić:

  1. upewnij się, że tag CroppedAreaImageWidthPixels jest równy rzeczywistej szerokości obrazu.
  2. upewnij się, że tag CroppedAreaImageHeightPixels jest równy rzeczywistej wysokości obrazu
  3. jeśli krok 1 lub 2 nie powiedzie się, sprawdź, czy współczynnik proporcji obrazu został zachowany.
  4. jeśli krok 3 nie powiedzie się, nie wyświetlaj zdjęcia jako zdjęcia sferycznego, bo zostało ono przekształcone w niezgodny z nim sposób, co może spowodować zniekształcenia.
  5. Jeśli krok 3 przebiegnie pomyślnie, współczynnik proporcji jest równoważny i wszystkie powiązane z nimi wartości tagów powinny zostać przeskalowane, aby pasowały do nowego rozmiaru obrazu:
    Przytnij CroppedAreaImagePixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels.

Omówienie kątów Eulera

Orientacja zdjęcia sferycznego w ramce świata jest określana przez kąty Eulera. Kąty narożników można zdefiniować na wiele sposobów. Prawidłowo program musi być zgodny ze sprawdzonymi metodami opisanymi w zasadach Eulera.

Pozycja nad powierzchnią Ziemi wskazuje stały i lokalny układ XYZ, gdzie Z jest górą i zastępuje orbitrekiem, a X to północny wschód, a Y to północ. Orientacja jest określana w stosunku do tego stałego i lokalnego klatki, a kąt Eulera to obrót wokół tych osi. W związku z tym orientacja położenia biegów jest nieokreślona. Oznacza to, że zdjęcie sferyczne pod kątem kątów (0, 0, 0) jest ustawione w taki sposób, że jego środkowy piksel jest skierowany w kierunku północnym z równaniem sferycznym równolegle do powierzchni Ziemi.

Kąt Eulera zapewnia mapowanie z punktów w (obróconej) &Ramce na zdjęcia sferyczne na punkty w (stałej) "localframe":

Matryca obrotu jest tworzona z kątów Eulera w następujący sposób (ważne jest zachowanie tej kolejności):

R = R_Z(-nagłówek) * R_X(prezentacja) * R_Y(rola)

gdzie: R_*(t) to obrót prawostronny wokół nazwanej osi:

/a ! /] z do! {/0} z } razy na („?] ] {/0}] {/0}{/0} {/0}{/0}{/0}{/0}{/0}{/0} for {0}/to do przy ktoś przez 1> do} razy nawet [T z do} razy [T z do z do] udziała] !/ poczty]!

i gdzie: Z = w górę, X = wschód, Y = północ.

Zachowanie tej kolejności jest ważne:

R = R_Z(-nagłówek) * R_X(prezentacja) * R_Y(rola)

ponieważ obroty nie są połączone.

Kąt nachylenia nagłówka jest taki sam jak standardowy.

Odsyłacze

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