फ़ोटो स्फ़ीर XMP मेटाडेटा

यहां बताए गए पैनोरामा नेमस्पेस में ऐसे प्रॉपर्टी शामिल हैं जो फ़ोटो स्फ़ीयर बनाने और रेंडर करने के बारे में जानकारी देती हैं. इन्हें कभी-कभी पैनोरामा भी कहा जाता है. जैसे, Android 4.2 कैमरे में फ़ोटो स्फ़ीर की सुविधा के ज़रिए बनाए गए नेमस्पेस. मेटाडेटा को Adobe XMP मानक में बताए गए तरीके से क्रम से लगाना चाहिए और फ़ोटो स्फ़ीयर में एम्बेड करना चाहिए (इस पेज के आखिर में दिए गए references देखें).

नेमस्पेस यूआरआई http://ns.google.com/photos/1.0/panorama/ है

मेटाडेटा की प्रॉपर्टी

नीचे दिए गए डायग्राम और टेबल में GPano पैरामीटर के ज़रिए एनकैप्सुलेट किए गए फ़ोटो स्फ़ीयर की प्रॉपर्टी दिखाई गई हैं. 360 डिग्री फ़ोटो में बदलाव करते समय और उन्हें देखते समय, कृपया इस दस्तावेज़ में बताए गए तरीके से मेटाडेटा की पुष्टि और उसे अपडेट करना न भूलें. पोज़ और शुरुआती हेडिंग फ़ील्ड के बारे में बताते समय, कृपया यूलर ऐंगल कन्वेंशन का पालन करना न भूलें, जिसके बारे में इस दस्तावेज़ में आगे बताया गया है.

ध्यान दें कि Google प्रॉडक्ट केवल गोलाकार प्रोजेक्शन का समर्थन करते हैं. अतिरिक्त अनुमान अभी अन्य पक्ष ही इस्तेमाल कर सकते हैं.

गोलाकार प्रोजेक्शन

बेलनाकार प्रोजेक्शन

ध्यान दें कि अगर किसी बेलनाकार इमेज का ऊपरी हिस्सा क्षितिज के ऊपर है, तो CrosspedAreaTopPixels नेगेटिव होने चाहिए. CrosspedAreaTopPixels के लिए 0 मान, इमेज के सबसे ऊपर क्षितिज पर रहेगा. CrosspedAreaTopPixels की पॉज़िटिव वैल्यू, इमेज में सबसे ऊपर क्षितिज के नीचे होती है.

GPano पैरामीटर का रेफ़रंस

नाम Type ज़रूरी है डिफ़ॉल्ट वैल्यू
(दर्शक को यह मान लिया गया)
प्रॉपर्टी का ब्यौरा इमेज में बदलाव किए जाने पर कार्रवाई ज़रूरी है
GPano:UsePanoramaViewer बूलियन नहीं सही क्या इस चित्र को सामान्य फ़्लैट इमेज के बजाय फ़ोटो स्फ़ीयर व्यूअर में दिखाना है. यह उपयोगकर्ता की पसंद या स्टिचिंग सॉफ़्टवेयर के आधार पर तय किया जा सकता है. इमेज दिखाने या डालने वाला ऐप्लिकेशन, इसे अनदेखा कर सकता है. स्केल/क्रॉप:
कोई बदलाव नहीं. अगर फ़ील्ड ऑफ़ व्यू किसी तय वैल्यू से कम हो जाता है, तो ऐप्लिकेशन इसे 'गलत' पर स्विच कर सकता है.
GPano:CaptureSoftware String नहीं लागू नहीं अगर Android फ़ोन जैसे किसी मोबाइल डिवाइस पर किसी ऐप्लिकेशन का इस्तेमाल करके कैप्चर किया गया था, तो इस्तेमाल किए गए ऐप्लिकेशन का नाम (जैसे कि "फ़ोटो स्फ़ीर"). अगर सोर्स इमेज मैन्युअल तरीके से कैप्चर की गई हैं, जैसे कि ट्राइपॉड पर डीएसएलआर का इस्तेमाल करके, तो इसे खाली छोड़ देना चाहिए. लागू नहीं
GPano:StitchingSoftware String नहीं लागू नहीं वह सॉफ़्टवेयर जिसका इस्तेमाल अंतिम 360 डिग्री पैनोरामा बनाने के लिए किया गया था. यह कभी-कभी GPano:CaptureSoftware की वैल्यू के बराबर हो सकता है. लागू नहीं
GPano:ProjectionType टेक्स्ट का विकल्प खोलें हां

इक्वीरेक्टेंगुलर

इमेज फ़ाइल में इस्तेमाल किया गया प्रोजेक्शन टाइप. फ़िलहाल, Google के प्रॉडक्ट सिर्फ़ इक्वीरेक्टैंग्युलर वैल्यू का इस्तेमाल करते हैं. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:PoseHeadingDegrees रियल नहीं, लेकिन Google Maps पर दिखाने के लिए यह ज़रूरी है लागू नहीं कंपास का शीर्षक, जिसे इमेज के बीच में रखने के लिए, उत्तर से घड़ी की दिशा में डिग्री में मापा गया है. वैल्यू, 0 से 360 के बीच होनी चाहिए. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:PosePitchDegrees रियल नहीं 0 पिच को इमेज के बीच वाले हिस्से के लिए, क्षितिज के ऊपर डिग्री में मापा जाता है. वैल्यू, >= -90 और <= 90 होनी चाहिए. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:PoseRollDegrees रियल नहीं 0 इमेज का रोल, जिसे डिग्री में मापा गया है, जहां क्षितिज का लेवल 0 है. जैसे-जैसे रोल बढ़ता है, वैसे-वैसे इमेज में क्षितिज घड़ी की विपरीत दिशा में घूमता है. वैल्यू, -180 से 180 के बीच और 180 से कम होनी चाहिए. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:InitialViewHeadingDegrees Integer नहीं 0 शुरुआती दृश्य का शीर्षक कोण, जो वास्तविक दुनिया के उत्तर से घड़ी की दिशा में डिग्री है. यह पैनो सेंटर से संबंधित नहीं है. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:InitialViewPitchDegrees Integer नहीं 0 शुरुआती व्यू का पिच ऐंगल, असल दुनिया के क्षितिज से कुछ डिग्री ऊपर होता है, न कि पैनो सेंटर से. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:InitialViewRollDegrees Integer नहीं 0 शुरुआती व्यू का रोल ऐंगल डिग्री में, जहां असल दुनिया के क्षितिज का लेवल 0 होता है. जैसे-जैसे रोल बढ़ता है, वैसे-वैसे व्यू में क्षितिज घड़ी की विपरीत दिशा में घूमता है. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:InitialHorizontalFOVDegrees रियल नहीं लागू नहीं व्यू का शुरुआती हॉरिज़ॉन्टल फ़ील्ड, जिसे दर्शक को दिखाना चाहिए (डिग्री में). यह ज़ूम लेवल की तरह है. लागू नहीं
GPano:InitialVerticalFOVDegrees रियल नहीं लागू नहीं व्यू का शुरुआती वर्टिकल फ़ील्ड, जिसे दर्शक को दिखाना चाहिए (डिग्री में). यह ज़ूम लेवल की तरह है. अगर GPano:beginHorizontalFOVDegrees और GPano:मामलों में वर्टिकल एफ़ओवीडीग्रीज़, दोनों का इस्तेमाल किया जाता है, तो जीपीएनो:इनीशियलHorizontalFOVDegrees को प्राथमिकता दी जाती है. अगर आपका कॉन्टेंट एक से ज़्यादा आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में दिखाया जाना है, तो सिर्फ़ StartVerticalFOVDegrees का इस्तेमाल करें. साथ ही, हॉरिज़ॉन्टल फ़ील्ड ऑफ़ व्यू के बदलने पर भी वर्टिकल फ़ील्ड को एक समान दिखाना हो. Google के प्रॉडक्ट फ़िलहाल इस फ़ील्ड के साथ काम नहीं करते. लागू नहीं
GPano:FirstPhotoDate तारीख नहीं लागू नहीं 360 डिग्री में बनाई गई पहली इमेज की तारीख और समय. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:LastPhotoDate तारीख नहीं लागू नहीं 360 डिग्री में बनाई गई अंतिम चित्र की तारीख और समय. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:SourcePhotosCount Integer नहीं लागू नहीं फ़ोटो स्फ़ीयर बनाने के लिए उपयोग की गई सोर्स इमेज की संख्या. स्केल/क्रॉप: कोई बदलाव नहीं.
GPano:ExposureLockUsed बूलियन नहीं लागू नहीं अलग-अलग स्रोतों के फ़ोटो लिए जाते समय, कैमरे की एक्सपोज़र सेटिंग को लॉक किया गया था या नहीं. लागू नहीं
GPano:CroppedAreaImageWidthPixels Integer हां लागू नहीं इमेज की मूल चौड़ाई, पिक्सल में है (बिना बदलाव वाली इमेज के लिए, असल इमेज की चौड़ाई के बराबर). ऊपर दिए डायग्राम देखें. स्केल/क्रॉप: इमेज का नया साइज़ दिखाने के लिए, इस प्रॉपर्टी को अपडेट करने की ज़रूरत है.
GPano:CroppedAreaImageHeightPixels Integer हां लागू नहीं इमेज की असल ऊंचाई, पिक्सल में है (बिना बदलाव वाली इमेज के लिए असल इमेज की ऊंचाई के बराबर). ऊपर दिए डायग्राम देखें. स्केल/क्रॉप: इमेज का नया साइज़ दिखाने के लिए, इस प्रॉपर्टी को अपडेट करने की ज़रूरत है.
GPano:FullPanoWidthPixels Integer हां लागू नहीं मूल पूरी चौड़ाई, जिससे इमेज को काटा गया था. अगर सिर्फ़ आंशिक 360 डिग्री वाला फ़ोटो स्फ़ीयर कैप्चर किया गया है, तो यह पूरी फ़ोटो स्फ़ीयर की चौड़ाई के बारे में बताता है. ऊपर दिए डायग्राम देखें. काटें: कोई बदलाव नहीं.
स्केल: इसे सही तरह से स्केल करने की ज़रूरत है.
GPano:FullPanoHeightPixels Integer हां लागू नहीं मूल पूरी ऊंचाई, जिससे इमेज को काटा गया था. अगर सिर्फ़ कुछ 'फ़ोटो स्फ़ीयर' कैप्चर किया गया है, तो यह पूरी फ़ोटो स्फ़ीयर की ऊंचाई तय करता है. ऊपर दिए डायग्राम देखें. काटें: कोई बदलाव नहीं.
स्केल: इसे सही तरह से स्केल करने की ज़रूरत है.
GPano:CroppedAreaLeftPixels Integer हां लागू नहीं वह कॉलम जहां इमेज के बाएं किनारे को पूरे साइज़ के 360 डिग्री वाले फ़ोटो स्फ़ीयर से काटा गया था. ऊपर दिए डायग्राम देखें. क्रॉप: अगर इमेज को बाईं ओर से काटा जाता है, तो इस वैल्यू को अपडेट करना ज़रूरी है.
स्केल: इसे ज़रूरत के हिसाब से स्केल करना ज़रूरी है.
GPano:CroppedAreaTopPixels Integer हां लागू नहीं वह पंक्ति जहां चित्र के ऊपरी किनारे को पूरे आकार वाले 360 डिग्री के फ़ोटो स्फ़ीयर से काटा गया था. ऊपर दिए डायग्राम देखें. काटें: अगर इमेज के ऊपरी हिस्से को क्रॉप किया जाता है, तो इस वैल्यू को अपडेट करना ज़रूरी है.
स्केल: इसे ज़रूरत के हिसाब से स्केल करना ज़रूरी है.
GPano:InitialCameraDolly रियल नहीं 0 यह वैकल्पिक पैरामीटर, वर्चुअल कैमरे की पोज़िशन को फ़ोटो स्फ़ीयर के बीच से दूर, व्यू लाइन के साथ मूव करता है. पीछे की सतह की स्थिति -1.0 से दिखाई जाती है, जबकि सामने की सतह की स्थिति 1.0 से दिखाई जाती है. सामान्य तौर पर देखने के लिए, यह पैरामीटर 0 पर सेट होना चाहिए. लागू नहीं

पूर्ण 360 डिग्री पैनोरामा का उदाहरण

जो प्रोग्रामर नहीं हैं वे सिर्फ़ छोटे बदलावों के साथ अपने मौजूदा पूरे 360 डिग्री फ़ोटोस्फ़ीयर (360 डिग्री x 180 डिग्री) में मेटाडेटा का उदाहरण जोड़ सकते हैं. ऐसा Adobe Photoshop जैसे इमेज एडिटिंग प्रॉडक्ट में किया जा सकता है.

  1. पिक्सल में आपकी इमेज की संबंधित चौड़ाई और ऊंचाई के मेल खाने के लिए 4000 और 2000 की किसी भी गड़बड़ी को बदलें
  2. अगर आप चाहते हैं कि Google Maps आपका 360 डिग्री वाली फ़ोटो स्फ़ीयर दिखा सके, तो PoseheadingDegrees अपडेट करें. ऐसा न करने पर, आपके पास इस पैरामीटर को हटाने का विकल्प होता है
  3. वैकल्पिक पैरामीटर अपडेट करें या हटाएं (जैसा कि ऊपर बताया गया है)
<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>

आंशिक फ़ोटो स्फ़ीयर का उदाहरण

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

चित्र संपादन में मज़बूती

बेहतर तरीके से काम करने के लिए, व्यूअर में 360 डिग्री का फ़ोटो स्फ़ीयर दिखाने वाले प्रोग्राम की जांच करनी चाहिए. ऐसा करने के लिए, यहां दिया गया तरीका अपनाएं:

  1. पक्का करें कि ClippedAreaImagewidthPixels टैग, इमेज की असल चौड़ाई के बराबर है
  2. पक्का करें कि ClippedAreaImageHeightPixels टैग, इमेज की असल ऊंचाई के बराबर है
  3. अगर पहला या दूसरा चरण पूरा नहीं होता है, तो देखें कि क्या इमेज का आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) सुरक्षित है
  4. अगर चरण 3 विफल हो जाता है, तो चित्र को फ़ोटो स्फ़ीयर के रूप में न दिखाएं, क्योंकि उसे असंगत तरीके से बदल दिया गया है, जिससे खराब डिस्टॉर्शन पैदा होंगे
  5. अगर चरण 3 पास होता है, तो आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) बराबर होता है और इमेज के नए साइज़ के हिसाब से संबंधित टैग की सभी वैल्यू को स्केल किया जाना चाहिए:
    CrosspedAreaImagewidthPixels, अक्षमAreaImage Analyticss, FullPanowidthPixels, FullPanoHeightPixels, KrpedAreaLeftPixelRights, RightpedAreaPixels.

यूलर कोणों की खास जानकारी

वर्ल्ड फ़्रेम में 360 डिग्री कैमरे का ओरिएंटेशन (स्क्रीन का ओरिएंटेशन) यूलर ऐंगल से तय किया जाता है. यूलर कोणों को कई तरह से परिभाषित किया जा सकता है. सही होने के लिए, प्रोग्राम को यहां बताए गए यूलर कोण परंपरा का सख्ती से पालन करना चाहिए.

पृथ्वी की सतह के ऊपर की स्थिति एक स्थिर "लोकल फ़्रेम" XYZ को परिभाषित करती है, जहां Z ऊपर की ओर और पृथ्वी की सतह से ऑर्थोगनल होता है. X, पूर्व दिशा में, और Y उत्तर में है. ओरिएंटेशन इस तय किए गए "लोकल फ़्रेम" के हिसाब से तय किया जाता है और यूलर कोण इन तय XYZ ऐक्सिस के चारों ओर घूमने वाले होते हैं. इसलिए, पोल्स पर पोज़ ओरिएंटेशन की जानकारी नहीं दी गई है. इसका मतलब है कि कोणों (0, 0, 0) वाले फ़ोटो स्फ़ीयर को इस तरह से ओरिएंट किया जाएगा कि सेंटर पिक्सल, उत्तर दिशा की वजह से होगा और फ़ोटो स्फ़ीयर का भूमध्य रेखा पृथ्वी की सतह के समानांतर होगी.

यूलर एंगल, (घुमाए गए) "फ़ोटो स्फ़ीयर फ़्रेम" में मौजूद पॉइंट से (फ़िक्स) "लोकल फ़्रेम" के पॉइंट से मैपिंग देते हैं:
 
यूलर ऐंगल से इस तरह के पॉइंट तक रोटेशन मैट्रिक्स बनाया जाता है (इस क्रम को बनाए रखना ज़रूरी है):

R = R_Z(-हेडिंग) * R_X(पिच) * R_Y(रोल)

कहां: R_*(t) नाम वाले ऐक्सिस के चारों ओर दाएं हाथ का रोटेशन है:

R_Z(कोण) = [ cos(कोण), -sin(एंगल), 0
sin(कोण), cos(कोण), 0
0, 0, 1 ]
 
R_X(कोण)
(कोण,
कोण,
कोण,
में कोण,
कोण

और कहां: Z = ऊपर, X = पूर्व, Y = उत्तर.

इस क्रम को बनाए रखना ज़रूरी है:

R = R_Z(-हेडिंग) * R_X(पिच) * R_Y(रोल)

क्योंकि रोटेशन, क्रम के मुताबिक नहीं होते हैं.

ध्यान दें कि हेडिंग ऐंगल और स्टैंडर्ड कंपास हेडिंग, एक ही होते हैं.

References

Adobe XMP मानक: http://www.adobe.com/devnet/xmp.html