Opisana tutaj przestrzeń nazw panoramy zawiera właściwości, które zapewniają informacje na temat tworzenia i renderowania zdjęć sferycznych, a także i czasami nazywane panoramami, utworzone za pomocą funkcji Photo Sphere w aparacie z Androidem 4.2. powinny zostać zserializowane i umieszczone wewnątrz zdjęcia sferycznego jako opisane przez Adobe XMP. (patrz źródła informacji na końcu tej strony).
Identyfikator URI przestrzeni nazw to http://ns.google.com/photos/1.0/panorama/
Właściwości metadanych
Na diagramach i w tabeli poniżej przedstawiono właściwości zdjęć sferycznych zawarte w obrazach sferycznych Parametry GPano. Podczas edytowania i wyświetlania zdjęć sferycznych odpowiednio zweryfikować i zaktualizować metadane, co opisano w dalszej części tego dokumentu. Określając pola pozycji i początkowego nagłówka, pamiętaj o przestrzeganiu konwencje kątów Eulera omówione w dalszej części artykułu ten dokument.
Pamiętaj, że usługi Google obsługują tylko rzutowanie sferyczne. Dodatkowe prognozy są obecnie obsługiwane tylko przez inne podmioty.
Odwzorowania sferyczne
![]()
Odwzorowanie walcowe walcowe
![]()
Pamiętaj, że jeśli góra obrazu walcowego znajduje się powyżej horyzontu, Wartość CroppedAreaTopPixels musi być ujemna. Wartość 0 w przypadku CroppedAreaTopPixels spowoduje umieszczenie obrazu na horyzoncie. Wartość dodatnia Skrót CroppedAreaTopPixels umieszcza górną część zdjęcia poniżej horyzontu.
Odniesienie do parametrów GPano
| Nazwa | Typ | Wymagane | Wartość domyślna (przypuszczalne przez widza) |
Opis właściwości | Wymagane działanie w przypadku zmodyfikowania obrazu |
|---|---|---|---|---|---|
| GPano:UsePanoramaViewer | Wartość logiczna | Nie | Prawda | Określa, czy obraz ma być wyświetlany w przeglądarce zdjęć sferycznych, a nie jako zwykły płaski obraz. Można to określić na podstawie preferencji użytkownika lub przez oprogramowanie do łączenia zdjęć. Aplikacja wyświetlająca lub przetwarzająca obraz może to zignorować. | skala/przycięcie: bez zmian. Aplikacja może zmienić to ustawienie na Fałsz, jeśli pole widzenia spadnie poniżej określonej wartości. |
| GPano:CaptureSoftware | Ciąg znaków | Nie | nie dotyczy | Jeśli zdjęcie zostało zrobione przy użyciu aplikacji na urządzeniu mobilnym, np. telefonu z Androidem, jest to nazwa użytej aplikacji (np. „Zdjęcie sferyczne”). To pole należy pozostawić puste, jeśli zdjęcia źródłowe zostały wykonane ręcznie, np. przy użyciu lustrzanki cyfrowej na statywie. | nie dotyczy |
| GPano:StitchingSoftware | Ciąg znaków | Nie | nie dotyczy | Oprogramowanie, które posłużyło do utworzenia ostatecznego zdjęcia sferycznego. Może ona być czasami taka sama jak w polu GPano:Capture Software. | nie dotyczy |
| GPano:ProjectionType | Otwórz wybór tekstu | Tak |
walcowy równoodległościowy |
Typ projekcji użyty w pliku obrazu. Usługi Google obsługują obecnie tylko wartość walcową równoodległościową. | skala/przycięcie: bez zmian. |
| GPano:PoseHeadingDegrees | Prawdziwe | Nie, ale jest wymagany do wyświetlania w Mapach Google | nie dotyczy | Nagłówek kompasu, mierzony w stopniach od północy zgodnie z ruchem wskazówek zegara, oznaczający środek zdjęcia. Wartości muszą mieścić się w zakresie >= 0 i < 360. | skala/przycięcie: bez zmian. |
| GPano:PosePitchDegrees | Prawdziwe | Nie | 0 | Wysokość punktu, mierzona w stopniach powyżej horyzontu, dotycząca środka obrazu. Wartość musi mieścić się w przedziale od –90 do <= 90. | skala/przycięcie: bez zmian. |
| GPano:PoseRollDegrees | Prawdziwe | Nie | 0 | Obrót (mierzony w stopniach) obrazu, gdy poziom krawędzi horyzontu wynosi 0. W miarę jak horyzont rośnie, horyzont obraca się na zdjęciu w lewo. Wartość musi być większa niż -180 i <= 180. | skala/przycięcie: bez zmian. |
| GPano:InitialViewHeadingDegrees | Liczba całkowita | Nie | 0 | Kąt kierunku początkowego widoku wyrażony w stopniach w kierunku zgodnym z ruchem wskazówek zegara, względem rzeczywistej północy, a nie względem środka panoramy. | skala/przycięcie: bez zmian. |
| GPano:InitialViewPitchDegrees | Liczba całkowita | Nie | 0 | Kąt nachylenia początkowego widoku wyrażony w stopniach powyżej horyzontu rzeczywistego, a nie w odniesieniu do środka panoramy. | skala/przycięcie: bez zmian. |
| GPano:InitialViewRollDegrees | Liczba całkowita | Nie | 0 | Kąt obrotu widoku początkowego w stopniach, przy którym poziom do rzeczywistego horyzontu wynosi 0. W miarę jak horyzont obraca się w kierunku przeciwnym do ruchu wskazówek zegara, horyzont obraca się w kierunku przeciwnym do ruchu wskazówek zegara. | skala/przycięcie: bez zmian. |
| GPano:InitialHorizontalFOVDegrees | Prawdziwe | Nie | nie dotyczy | Początkowe poziome pole widzenia, które użytkownik powinien wyświetlić (w stopniach). Przypomina to poziom powiększenia. | nie dotyczy |
| GPano:InitialVerticalFOVDegrees | Prawdziwe | Nie | nie dotyczy | Początkowe pionowe pole widzenia, które powinien wyświetlić użytkownik (w stopniach). Przypomina to poziom powiększenia. Jeśli obecne są zarówno wartości GPano:InitialLevelFOVDe tworzones, a także GPano:InitialVerticalFOVDecites, ustawienie ma pierwszeństwo. Wartości pola Początkowej odległości w pionie należy użyć tylko wtedy, gdy materiały mają być wyświetlane w różnych formatach obrazu i wolisz, aby pionowe pole widzenia pozostawało stałe, a poziome pole może się zmieniać. Usługi Google obecnie nie obsługują tego pola. | nie dotyczy |
| GPano:FirstPhotoDate | Data | Nie | nie dotyczy | Data i godzina utworzenia pierwszego zdjęcia sferycznego. | skala/przycięcie: bez zmian. |
| GPano:LastPhotoDate | Data | Nie | nie dotyczy | Data i godzina utworzenia ostatniego zdjęcia sferycznego. | skala/przycięcie: bez zmian. |
| GPano:SourcePhotosCount | Liczba całkowita | Nie | nie dotyczy | Liczba obrazów źródłowych użytych do utworzenia zdjęcia sferycznego. | skala/przycięcie: bez zmian. |
| GPano:ExposureLockUsed | Wartość logiczna | Nie | nie dotyczy | Informacje o tym, czy ustawienie ekspozycji aparatu zostało zablokowane, czy nie podczas robienia poszczególnych zdjęć źródłowych. | nie dotyczy |
| GPano:CroppedAreaImageWidthPixels | Liczba całkowita | Tak | nie dotyczy | Oryginalna szerokość obrazu w pikselach (równa rzeczywistej szerokości nieedytowanych obrazów). Zobacz wykresy powyżej. | skala/przycięcie: ta właściwość wymaga zaktualizowania pod kątem nowego rozmiaru obrazu. |
| GPano:CroppedAreaImageHeightPixels | Liczba całkowita | Tak | nie dotyczy | Oryginalna wysokość obrazu w pikselach (równa rzeczywistej wysokości obrazu w przypadku nieedytowanych obrazów). Zobacz wykresy powyżej. | skala/przycięcie: ta właściwość wymaga zaktualizowania pod kątem nowego rozmiaru obrazu. |
| GPano:FullPanoWidthPixels | Liczba całkowita | Tak | nie dotyczy | Oryginalna pełna szerokość, z której obraz został przycięty. Jeśli zrobione zostało tylko częściowe zdjęcie sferyczne, ta wartość określa szerokość całego zdjęcia sferycznego. Zobacz wykresy powyżej. | przycięcie: bez zmian. Skala: wymaga odpowiedniej przeskalowania. |
| GPano:FullPanoHeightPixels | Liczba całkowita | Tak | nie dotyczy | Oryginalna pełna wysokość, z której obraz został przycięty. Jeśli zrobione zostało tylko częściowe zdjęcie sferyczne, ta wartość określa wysokość całego zdjęcia sferycznego. Zobacz wykresy powyżej. | przycięcie: bez zmian. Skala: wymaga odpowiedniej przeskalowania. |
| GPano:CroppedAreaLeftPixels | Liczba całkowita | Tak | nie dotyczy | Kolumna, w której lewa krawędź obrazu została przycięta ze zdjęcia sferycznego w pełnym rozmiarze. Zobacz wykresy powyżej. | crop: jeśli lewe przycięcie obrazu ulegnie zmianie, należy zaktualizować tę wartość. Skala: należy odpowiednio dostosować rozmiar. |
| GPano:CroppedAreaTopPixels | Liczba całkowita | Tak | nie dotyczy | Wiersz, w którym górna krawędź obrazu została przycięta ze zdjęcia sferycznego w pełnym rozmiarze. Zobacz wykresy powyżej. | crop: jeśli zmieni się górne przycięcie obrazu, należy zaktualizować tę wartość. Skala: należy odpowiednio dostosować rozmiar. |
| GPano:InitialCameraDolly | Prawdziwe | Nie | 0 | Ten opcjonalny parametr przesuwa pozycję kamery wirtualnej wzdłuż linii wzroku od środka zdjęcia sferycznego. Położenie tylnej powierzchni jest wyrażone wartością -1,0, a położenie przedniej powierzchni – 1,0. Przy normalnym wyświetlaniu ten parametr powinien mieć wartość 0. | nie dotyczy |
Przykład pełnego zdjęcia sferycznego
Osoby niebędące programistami mogą dodać do swojego pełnego zdjęcia widoczne poniżej metadane (360° x 180 stopni) z niewielkimi zmianami. Można to zrobić w programach do edycji obrazów, takich jak Adobe Photoshop.
- zmień wszystkie wystąpienia 4000 i 2000, aby dopasować je do odpowiedniej szerokości i wysokości obrazu w pikselach
- zaktualizuj PoseHeadingDegrads, jeśli chcesz, by Mapy Google mogły wyświetlać Twoje zdjęcie sferyczne; w przeciwnym razie możesz opcjonalnie usunąć ten parametr,
- zaktualizowanie lub usunięcie parametrów opcjonalnych (jak opisano 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ęściowego 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ść edytowania obrazów
Aby wszystko działało jak najdokładniej, programy wyświetlające zdjęcia sferyczne w przeglądarce powinny oryginalne zdjęcie sferyczne zostało przeskalowane przez aplikację bez aktualizowania metadanych. Aby to zrobić:
- upewnij się, że tag CroppedAreaImageWidthPixels jest równa rzeczywistej szerokości obrazu
- upewnij się, że tag CroppedAreaImageHeightPixels jest równy rzeczywistej wysokości obrazu;
- jeśli krok 1 lub 2 nie powiedzie się, sprawdź, czy format obrazu został zachowany
- Jeśli krok 3 nie powiedzie się, nie wyświetlaj zdjęcia jako zdjęcia sferycznego, ponieważ zostało ono przekształcone w niekompatybilny sposób, co spowoduje pojawienie się
- jeśli krok 3 zostanie zaliczony, współczynnik proporcji będzie równoważny i wszystkie następujące powiązane wartości tagów należy przeskalować, aby pasowały do nowego rozmiaru obrazu:
CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels.
Omówienie kątów Eulera
Orientację zdjęcia sferycznego w ramce świata jest określana przez Eulera pod kątem różnych kątów. Kąty Eulera można zdefiniować na wiele sposobów. Aby mieć pewność, że program jest słuszny, zgodnie z podanymi tutaj konwencjami kątów Eulera.
Położenie nad powierzchnią Ziemi określa stały „lokalny”, ramki” XYZ, gdzie Z jest w górę i ortogonalne do powierzchni Ziemi, X to prawdziwy wschód, a Y to północ, Orientacja jest zdefiniowana w odniesieniu do tego stała „lokalna klatka”, a kąty Eulera to obroty wokół tych o stałej osi XYZ. Orientacja pozycji jest więc nieokreślona na biegunach. Ten oznacza, że zdjęcie sferyczne o kątach (0, 0, 0) zostanie zorientowane w taki sposób, środkowe płaszczyzny piksela skierowane na północ do równika zdjęcia sferycznego, równolegle do na powierzchni Ziemi.
Kąty Eulera umożliwiają przyporządkowanie punktów na (obróconym) „zdjęciu”
ramki sferycznej" do punktów w (stałej) „ramce lokalnej”:
Macierz obrotu jest zbudowana z kątów Eulera jako
następujące (ważne jest zachowanie tej kolejności):
R = R_Z(-nagłówek) * R_X(pitch) * R_Y(rola)
gdzie: R_*(t) oznacza obrót praworęczny wokół nazwanej osi:
gdzie: Z = wyżej, X = wschód, Y = północ.
Ważne jest zachowanie tej kolejności:
R = R_Z(-nagłówek) * R_X(pitch) * R_Y(rola)
, bo rotacje nie są przemienne.
Pamiętaj, że kąt nagłówka jest taki sam jak w przypadku standardowego nagłówka kompasu.
Pliki referencyjne
Adobe XMP Standard: http://www.adobe.com/devnet/xmp.html