البيانات الوصفية بتنسيق XMP للصور البانورامية 360 درجة

تحتوي مساحة اسم البانوراما الموضحة هنا على الخصائص التي توفر معلومات تتعلق بإنشاء وعرض الصور البانورامية، فضلًا عن التي يشار إليها أحيانًا باسم البانوراما، مثل الصور التي تم إنشاؤها بواسطة ميزة الصور البانورامية 360 درجة في كاميرا Android 4.2. تشير رسالة الأشكال البيانية أن البيانات الوصفية يجب أن تكون تسلسلية ومضمنة داخل الصورة البانورامية 360 درجة الموضحة في Adobe XMP (يمكنك الاطّلاع على المراجع في نهاية هذه الصفحة).

معرّف الموارد المنتظم (URI) لمساحة الاسم هو http://ns.google.com/photos/1.0/panorama/

خصائص البيانات الوصفية

توضح المخططات والجدول أدناه خصائص صور بانوراما 360 درجة مُغلَّفة معاملات GPano. عند تعديل صور بانوراما 360 درجة وعرضها، يرجى التأكد من التحقق من البيانات الوصفية وتعديلها وفقًا لذلك كما هو موضّح لاحقًا في هذا المستند. عند تحديد الوضع وحقول العنوان الأولي، يرجى التأكد من اتباع اصطلاحات زاوية أولر التي نوقشت لاحقًا في هذا المستند.

تجدر الإشارة إلى أنّ منتجات Google تتيح الإسقاطات الكروية فقط. في الوقت الحالي، تتوفّر توقعات إضافية فقط من قِبل الأطراف الأخرى.

إسقاطات كروية

إسقاطات أسطوانية

لاحظ أنه إذا كان الجزء العلوي من الصورة الأسطوانية أعلى الأفق، يجب أن تكون عناصر ClippedAreaTopPixels سالبة. قيمة 0 لـ ClippedAreaTopPixels سيضع الجزء العلوي من الصورة في الأفق. قيمة موجبة يضع اقتصاصAreaTopPixels الجزء العلوي من الصورة أسفل الأفق.

مرجع معلمة GPano

الاسم النوع مطلوب القيمة التلقائية
(يُفترض أن يتم افتراض المشاهد)
وصف الموقع مطلوب اتخاذ إجراء في حال تعديل الصورة
GPano:UsePanoramaViewer منطقي لا صحيح لتحديد ما إذا كان سيتم عرض هذه الصورة في عارض صور بانوراما 360 درجة بدلاً من عرضها كصورة مسطحة عادية. ويمكن تحديد ذلك استنادًا إلى الإعدادات المفضّلة للمستخدم أو من خلال برنامج الدمج. قد يتجاهل التطبيق الذي يعرض الصورة أو يستوعبها هذا الخيار. مقياس/اقتصاص:
ما مِن تغيير. قد يقرر أحد التطبيقات تبديل ذلك إلى "خطأ" إذا كان مجال العرض أقل من قيمة معينة.
GPano:CaptureSoftware سلسلة لا timing fixed in amara إذا تم التقاط الصورة باستخدام تطبيق على جهاز جوّال، مثل هاتف Android، يكون اسم التطبيق الذي تم استخدامه (مثل "صورة بانورامية 360 درجة"). يجب ترك هذا الحقل فارغًا إذا تم التقاط صور المصدر يدويًا، على سبيل المثال باستخدام كاميرا رقمية ذات عدسة أحادية عاكسة (DSLR) على حامل ثلاثي القوائم. timing fixed in amara
GPano:StitchingSoftware سلسلة لا timing fixed in amara البرنامج الذي تم استخدامه لإنشاء صورة بانوراما 360 درجة النهائية. قد تكون هذه القيمة في بعض الأحيان هي القيمة نفسها في GPano:CaptureSoftware. timing fixed in amara
GPano:ProjectionType فتح ميزة "اختيار النص" نعم

التساوي المستطيلات

نوع الإسقاط المستخدَم في ملف الصورة تتيح منتجات Google حاليًا استخدام القيمة المستطيلات فقط. مقياس/اقتصاص: ما من تغيير.
GPano:PoseHeadingDegrees حقيقي لا، ولكنه مطلوب للعرض على "خرائط Google" timing fixed in amara اتجاه البوصلة، يتم قياسها بالدرجات من الشمال في اتجاه عقارب الساعة، بالنسبة إلى منتصف الصورة. يجب أن تكون القيمة >= 0 و< 360. مقياس/اقتصاص: ما من تغيير.
GPano:PosePitchDegrees حقيقي لا 0 درجة الانحدار، ويتم قياسها بالدرجات فوق الأفق، للوسط في الصورة. يجب أن تكون القيمة >= -90 و<= 90. مقياس/اقتصاص: ما من تغيير.
GPano:PoseRollDegrees حقيقي لا 0 لف الصورة بالدرجات، حيث يكون المستوى مع الأفق 0. كلما زاد اللف، يتم تدوير الأفق عكس عقارب الساعة في الصورة. يجب أن تكون القيمة > -180 و<= 180. مقياس/اقتصاص: ما من تغيير.
GPano:InitialViewHeadingDegrees عدد صحيح لا 0 زاوية العنوان للعرض الأولي بالدرجات في اتجاه عقارب الساعة من الشمال الواقعي، وليس بالنسبة إلى مركز البانوراما. مقياس/اقتصاص: ما من تغيير.
GPano:InitialViewPitchDegrees عدد صحيح لا 0 زاوية درجة الصوت للرؤية الأولية بالدرجات فوق الأفق الواقعي، وليس بالنسبة إلى مركز البانوراما. مقياس/اقتصاص: ما من تغيير.
GPano:InitialViewRollDegrees عدد صحيح لا 0 زاوية اللف للعرض الأولي بالدرجات حيث يكون المستوى مع أفق العالم الحقيقي 0. كلما زاد اللف، يدور الأفق عكس عقارب الساعة في العرض. مقياس/اقتصاص: ما من تغيير.
GPano:InitialHorizontalFOVDegrees حقيقي لا timing fixed in amara حقل العرض الأفقي الأولي الذي يجب أن يعرضه المشاهد (بالدرجات). هذا مشابه لمستوى التكبير/التصغير. timing fixed in amara
GPano:InitialVerticalFOVDegrees حقيقي لا timing fixed in amara حقل العرض الرأسي الأولي الذي يجب أن يعرضه المشاهد (بالدرجات). هذا مشابه لمستوى التكبير/التصغير. في حالة وجود كل من GPano:InitialHorizontalFOVDegrees وGPano:InitialVerticalFOVDegrees موجود، فإن GPano:InitialHorizontalFOVDegrees تكون الأولوية. استخدم InitialVerticalFOVDegrees فقط إذا سيتم عرض المحتوى الخاص بك بنسب عرض إلى ارتفاع متعددة، وتفضل أن يظل مجال الرؤية الرأسي ثابتًا بينما قد يتغير مجال الرؤية الأفقي. لا تتيح منتجات Google حاليًا هذا الحقل. timing fixed in amara
GPano:FirstPhotoDate التاريخ لا timing fixed in amara تاريخ ووقت أول صورة تم إنشاؤها في صورة بانوراما 360 درجة. مقياس/اقتصاص: ما من تغيير.
GPano:LastPhotoDate التاريخ لا timing fixed in amara تاريخ ووقت آخر صورة تم إنشاؤها في صورة بانوراما 360 درجة. مقياس/اقتصاص: ما من تغيير.
GPano:SourcePhotosCount عدد صحيح لا timing fixed in amara عدد صور المصدر المستخدمة لإنشاء الصورة البانورامية. مقياس/اقتصاص: ما من تغيير.
GPano:ExposureLockUsed منطقي لا timing fixed in amara عند التقاط صور فردية من المصدر، سواء تم قفل إعداد التعرّض للضوء في الكاميرا أم لا timing fixed in amara
GPano:CroppedAreaImageWidthPixels عدد صحيح نعم timing fixed in amara العرض الأصلي بالبكسل للصورة (يساوي عرض الصورة الفعلي بالنسبة إلى الصور غير المعدَّلة) راجِع المخططات أعلاه. المقياس/الاقتصاص: يجب تحديث هذه الخاصية لتعكس الحجم الجديد للصورة.
GPano:CroppedAreaImageHeightPixels عدد صحيح نعم timing fixed in amara الارتفاع الأصلي بالبكسل للصورة (يساوي ارتفاع الصورة الفعلي بالنسبة إلى الصور غير المعدَّلة) راجِع المخططات أعلاه. المقياس/الاقتصاص: يجب تحديث هذه الخاصية لتعكس الحجم الجديد للصورة.
GPano:FullPanoWidthPixels عدد صحيح نعم timing fixed in amara العرض الكامل الأصلي الذي تم اقتصاص الصورة منه. إذا تم التقاط صورة بانوراما 360 درجة جزئية فقط، فإن هذا يحدد عرض ما كان يمكن أن تكون عليه صورة بانوراما 360 درجة كاملة. راجِع المخططات أعلاه. اقتصاص: بدون تغيير.
المقياس: يجب ضبط الحجم بشكل صحيح وفقًا لذلك.
GPano:FullPanoHeightPixels عدد صحيح نعم timing fixed in amara الارتفاع الأصلي الكامل الذي تم اقتصاص الصورة منه. إذا تم التقاط صورة بانوراما 360 درجة جزئية فقط، فإن هذا يحدد ارتفاع الصورة البانورامية الكاملة. راجِع المخططات أعلاه. اقتصاص: بدون تغيير.
المقياس: يجب ضبط الحجم بشكل صحيح وفقًا لذلك.
GPano:CroppedAreaLeftPixels عدد صحيح نعم timing fixed in amara عمود يتم فيه اقتصاص الحافة اليسرى للصورة من صورة بانوراما 360 درجة بالحجم الكامل. راجِع المخططات أعلاه. اقتصاص: في حال تغيير الاقتصاص الأيسر من الصورة، يجب تعديل هذه القيمة.
المقياس: يجب ضبط الحجم بشكل صحيح وفقًا لذلك.
GPano:CroppedAreaTopPixels عدد صحيح نعم timing fixed in amara الصف الذي تم اقتصاص الحافة العلوية من الصورة من صورة بانوراما 360 درجة بالحجم الكامل. راجِع المخططات أعلاه. اقتصاص: في حال تغيير الاقتصاص العلوي للصورة، يجب تعديل هذه القيمة.
المقياس: يجب ضبط الحجم بشكل صحيح وفقًا لذلك.
GPano:InitialCameraDolly حقيقي لا 0 تعمل هذه المعلمة الاختيارية على تحريك موضع الكاميرا الافتراضية على طول خط الرؤية، بعيدًا عن مركز الصورة البانورامية. ويتم تمثيل موضع السطح الخلفي بالقيمة -1.0، في حين يتم تمثيل موضع السطح الأمامي بـ 1.0. بالنسبة إلى العرض العادي، يجب ضبط هذه المَعلمة على 0. timing fixed in amara

مثال لصورة بانوراما 360 درجة كاملة

يمكن لغير المبرمجين إضافة مثال البيانات الوصفية أدناه إلى صورهم الكاملة الحالية. مجالات 360 درجة × 180 درجة (360 درجة × 180 درجة) مع تعديلات صغيرة فقط. ويمكن إجراء ذلك في منتجات تعديل الصور، مثل Adobe Photoshop.

  1. تغيير مواضع ورود 4000 و2000 لمطابقة العرض والارتفاع المقابلين للصورة بالبكسل
  2. حدِّث PoseHeadingDegrees إذا كنت تريد أن تتمكن خرائط Google من عرض صورة بانوراما 360 درجة. يمكنك إزالة هذه المعلمة بشكل اختياري
  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>

مثال لصورة بانوراما 360 درجة

<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 درجة في العارض التحقق مما إذا كان إذا تم تغيير حجم صورة بانوراما 360 درجة الأصلية من خلال أحد التطبيقات دون تحديث بيانات التعريف. يمكن إجراء ذلك باتّباع الخطوات التالية:

  1. التأكد من أنّ علامة ClippedAreaImageDetailPixels مساوية للعرض الفعلي للصورة
  2. تأكَّد من أنّ علامة BlockpedAreaImageHeightPixels تساوي ارتفاع الصورة الفعلي
  3. إذا فشلت الخطوة 1 أو 2، فتحقق مما إذا تم الاحتفاظ بنسبة العرض إلى الارتفاع للصورة
  4. إذا لم تنجح الخطوة 3، لا تعرض الصورة على شكل صورة بانوراما 360 درجة لأنّه تم تحويلها بطريقة غير متوافقة ستؤدي إلى تشوّهات سيئة.
  5. إذا نجحت الخطوة 3، تكون نسبة العرض إلى الارتفاع متساوية ويجب ضبط جميع قيم العلامات المرتبطة التالية لتلائم حجم الصورة الجديد:
    ClippedAreaImageImagePixels، وClippedAreaImageHeightPixels، وFullPanowidthPixels، وFullPanoHeightPixels، وClippedAreaLeftPixels، وTrimpedAreaRightPixels.

نظرة عامة على Euler Angles

يحدد أويلر اتجاه الصورة البانورامية 360 درجة في إطار العالم الزوايا. يمكن تحديد زوايا أويلر بعدة طرق. لكي يكون الأمر صحيحًا، يجب أن يحرص البرنامج على اتبع اصطلاحات زاوية أولر الموضحة هنا.

يحدد الموضع فوق سطح الأرض قيمة ثابتة "محلية" إطار س ص ع، حيث تكون ع الي أعلى ومتعامدة لسطح الأرض، وتكون س س الشرق الحقيقي، وحرف ص صحيح في اتجاه الشمال. ويتم تحديد الاتجاه بالنسبة إلى هذا. ثابت "الإطار المحلي"، وزوايا أويلر هي دورانات حول هذه محاور س ص ع ث ية ثابتة. وبالتالي، يكون اتجاه الوضع غير محدَّد عند القطبين. هذا النمط صورة بانوراما 360 درجة ذات الزوايا (0، 0، 0) سيتم توجيهها بحيث اتجاه البكسل المركز للشمال مع خط الاستواء للصورة البانورامية بالتوازي مع سطح الأرض.

توفر زوايا أويلر رسمًا بيانيًا من النقاط في الصورة (التي يتم تدويرها) إطار الكرة" إلى نقاط في "الإطار المحلي" (الثابت):
 
يتم إنشاء مصفوفة دوران من زوايا أويلر على النحو التالي: (من المهم الحفاظ على هذا الترتيب):

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

حيث: R_*(t) هو تدوير باليد اليمنى حول المحور المسمى:











وأين: Z = لأعلى، X = الشرق، Y = الشمال.

من المهم الحفاظ على هذا الترتيب:

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

حيث إن عمليات التدوير ليست إبدالية.

لاحظ أن زاوية العنوان هي نفسها عنوان بوصلة قياسي.

المراجع

معيار Adobe XMP القياسي: http://www.adobe.com/devnet/xmp.html