מטא נתונים של XMP של תמונה פנורמית ב-360°

מרחב השמות של הפנורמה שמתואר כאן מכיל מאפיינים שמספקים מידע בנוגע ליצירה ולרינדור של תמונות פוטוספריות, שלפעמים מכונות גם תמונות פנורמה, כמו התמונות שנוצרות על ידי התכונה פנורמית ב-360° במצלמת Android 4.2. המטא-נתונים צריכים להיות מסודרים בהמשכים ולהטמיע אותם ב-photo sphere, כפי שמתואר בתקן Adobe XMP (ראו references בסוף הדף הזה).

ה-URI של מרחב השמות הוא http://ns.google.com/photos/1.0/panorama/

מאפייני מטא-נתונים

בתרשימים ובטבלה שבהמשך מוצגים המאפיינים של ה-photo sphere שמוקפים על ידי הפרמטרים של GPano. בעת עריכה והצגה של תמונות פנורמיות ב-360°, חשוב לאמת ולעדכן את המטא נתונים בהתאם, כפי שמתואר בהמשך מסמך זה. כשמציינים את שדות התנוחה והכותרת הראשונית, חשוב לפעול בהתאם למוסכמות של אוילר זווית שמפורטות בהמשך המסמך.

שימו לב שמוצרי Google תומכים רק בתחזיות כדוריות. תחזיות נוספות נתמכות כרגע רק על ידי גורמים אחרים.

תחזיות כדוריות

היטלים גליליים

שימו לב שאם החלק העליון של תמונה גלילית נמצא מעל האופק, ערכי CroppedAreaTopPixels חייבים להיות שליליים. הערך 0 עבור CroppedAreaTopPixels ימקם את החלק העליון של התמונה באופק. ערך חיובי של CroppedAreaTopPixels ממקם את החלק העליון של התמונה מתחת לאופק.

הפניה לפרמטר GPano

שם תיאור נדרש ערך ברירת המחדל
(הצופה הניח)
תיאור הנכס נדרשת פעולה אם התמונה שונתה
GPano:UsePanoramaViewer בוליאני לא נכון האם להציג את התמונה הזו במציג של תמונה פנורמית ב-360° ולא כתמונה רגילה רגילה. ניתן להגדיר זאת בהתאם להעדפות המשתמש או על ידי התוכנה ליצירת רצף תמונות. האפליקציה שמציגה או מטמיעה את התמונה עשויה להתעלם מכך. קנה מידה/חיתוך:
ללא שינוי. אפליקציה יכולה להחליט לשנות את ההגדרה הזו ל-False אם שדה הראייה נמוך מערך מסוים.
GPano:CaptureSoftware מחרוזת לא לא רלוונטי אם הצילום בוצע באמצעות אפליקציה במכשיר נייד, כמו טלפון Android, שם האפליקציה שבה נעשה שימוש (למשל, תמונה פנורמית ב-360°). יש להשאיר את השדה ריק אם תמונות המקור צולמו באופן ידני, למשל באמצעות DSLR על חצובה. לא רלוונטי
GPano:StitchingSoftware מחרוזת לא לא רלוונטי התוכנה ששימשה ליצירת התמונה הפוטוספרית הסופית. לפעמים הערך הזה יכול להיות זהה לערך שב-GPano:CaptureSoftware. לא רלוונטי
GPano:ProjectionType פתיחה של בחירת הטקסט כן

מלבן

סוג ההיטל שנעשה בו שימוש בקובץ התמונה. מוצרי Google תומכים בשלב זה בערך equirectangular בלבד. קנה מידה/חיתוך: ללא שינוי.
GPano:PoseHeadingDegrees ריאליסטי לא, אבל נדרש כדי להציג אותו במפות Google לא רלוונטי כותרת המצפן, נמדדת במעלות בכיוון השעון מצפון, למרכז התמונה. הערך חייב להיות גדול מ-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 ריאליסטי לא לא רלוונטי שדה הראייה האופקי ההתחלתי שעל הצופה להציג (במעלות). פעולה זו דומה לרמת הזום. לא רלוונטי
GPano:InitialVerticalFOVDegrees ריאליסטי לא לא רלוונטי שדה הראייה האנכי הראשוני שהצופה צריך להציג (במעלות). פעולה זו דומה לרמת הזום. אם יש שתי גרסאות: GPano:InitialHorizontalFOVDegrees ו-GPano:InitialVerticalFOVDegrees, ל-GPano:InitialHorizontalFOVDegrees. השתמשו רק ב-InitialFOVDegrees אם התוכן שלכם יוצג במספר יחסי גובה-רוחב, ואתם מעדיפים ששדה הראייה האנכי יישאר קבוע, כל עוד שדה הראייה האופקי עשוי להשתנות. בשלב זה, מוצרי Google לא תומכים בשדה הזה. לא רלוונטי
GPano:FirstPhotoDate תאריך לא לא רלוונטי התאריך והשעה של התמונה הראשונה שנוצרה ב-photo sphere. קנה מידה/חיתוך: ללא שינוי.
GPano:LastPhotoDate תאריך לא לא רלוונטי התאריך והשעה של התמונה האחרונה שנוצרה ב-photo sphere. קנה מידה/חיתוך: ללא שינוי.
GPano:SourcePhotosCount מספר שלם לא לא רלוונטי מספר תמונות המקור ששימשו ליצירת הצילום הפנורמי. קנה מידה/חיתוך: ללא שינוי.
GPano:ExposureLockUsed בוליאני לא לא רלוונטי כאשר צולמו תמונות מקור נפרדות, גם אם הגדרת החשיפה של המצלמה נעולה וגם אם לא. לא רלוונטי
GPano:CroppedAreaImageWidthPixels מספר שלם כן לא רלוונטי הרוחב המקורי בפיקסלים של התמונה (שווה לרוחב התמונה בפועל במקרה של תמונות לא ערוכות). ראו את התרשימים למעלה. קנה מידה/חיתוך: יש לעדכן מאפיין זה כך שישקף את הגודל החדש של התמונה.
GPano:CroppedAreaImageHeightPixels מספר שלם כן לא רלוונטי הגובה המקורי בפיקסלים של התמונה (שווה לגובה התמונה בפועל במקרה של תמונות לא ערוכות). ראו את התרשימים למעלה. קנה מידה/חיתוך: יש לעדכן מאפיין זה כך שישקף את הגודל החדש של התמונה.
GPano:FullPanoWidthPixels מספר שלם כן לא רלוונטי הרוחב המלא המקורי שממנו נחתכה התמונה. אם תועדו צילום פנורמי חלקי בלבד, הערך מציין את הרוחב של התמונה הפוטוספרית המלאה. ראו את התרשימים למעלה. חיתוך: ללא שינוי.
קנה מידה: יש לשנות את קנה המידה כראוי בהתאם.
GPano:FullPanoHeightPixels מספר שלם כן לא רלוונטי הגובה המלא המקורי שממנו נחתכה התמונה. אם צילמתם רק צילום פנורמי חלקי, הערך הזה מציין את הגובה של התמונה הפוטוספרית המלאה. ראו את התרשימים למעלה. חיתוך: ללא שינוי.
קנה מידה: יש לשנות את קנה המידה כראוי בהתאם.
GPano:CroppedAreaLeftPixels מספר שלם כן לא רלוונטי עמודה שבה הקצה השמאלי של התמונה נחתך מתמונת ה-photo sphere בגודל המלא. ראו את התרשימים למעלה. חיתוך: אם החיתוך הימני של התמונה משתנה, יש לעדכן את הערך הזה.
קנה מידה: יש לשנות את גודל התמונה כראוי.
GPano:CroppedAreaTopPixels מספר שלם כן לא רלוונטי השורה שבה נחתכו הקצה העליון של התמונה מתמונת ה-photo sphere בגודל המלא. ראו את התרשימים למעלה. חיתוך: אם החיתוך העליון של התמונה השתנה, יש לעדכן את הערך הזה.
קנה מידה: יש לשנות את גודל התמונה כראוי.
GPano:InitialCameraDolly ריאליסטי לא 0 הפרמטר האופציונלי הזה מזיז את המצלמה הווירטואלית לאורך קו הראייה, הרחק ממרכז התמונה הפוטוספרית. מיקום של משטח אחורי מיוצג על ידי הערך -1.0, והמיקום של המשטח הקדמי מיוצג על ידי 1.0. בתצוגה רגילה, יש להגדיר את הפרמטר הזה ל-0. לא רלוונטי

דוגמה של תמונה פנורמית ב-360°

מי שלא מתכנת יכול להוסיף את הדוגמה הבאה למטא-נתונים של תמונות ה-Photo פנורמיות המלאות הקיימות (360 מעלות x 180 מעלות) עם שינויים קטנים בלבד. ניתן לעשות זאת במוצרים לעריכת תמונות, כגון Adobe Photoshop.

  1. משנים את כל המופעים של 4000 ו-2000 כך שיתאימו לרוחב ולגובה התואמים של התמונה, בפיקסלים
  2. צריך לעדכן את Pose מיקודDegrees כדי לאפשר הצגת ה-Photo פנורמי במפות Google. אחרת, יש לך אפשרות להסיר את הפרמטר הזה
  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>

עמידות בעריכת תמונות

כדי להיות עמידים, תוכניות שמציגות תמונות פנורמיות במציג צריכות לבדוק אם אפליקציה מסוימת הותאמה לגודלה של התמונה הפוטוספרית המקורית מבלי לעדכן את המטא-נתונים. ניתן לעשות זאת באופן הבא:

  1. לוודא שהתג CroppedAreaImageWidthPixels שווה לרוחב התמונה בפועל
  2. מוודאים שהתג CroppedAreaImageHeightPixels שווה לגובה התמונה בפועל
  3. אם שלב 1 או 2 נכשל, בודקים אם יחס הגובה-רוחב של התמונה נשמר
  4. אם שלב 3 נכשל, אל תציג את התמונה כ-photo sphere מכיוון שהיא שונתה באופן לא תואם באופן שיגרום לעיוותים שגויים
  5. אם שלב 3 עובר, יחס הגובה-רוחב שווה ערך, ויש להתאים את כל ערכי התגים הבאים בהתאם לגודל התמונה החדש:
    CroppedAreaImageWidthPixels , CroppedAreaImageHeights , FullPanoWidthPixels , FullPanoHeightPixels , CroppedAreaLeftPixels , CroppedAreaRightPixels.

סקירה כללית על זוויות אוילר

הכיוון של התמונה הפוטוספרית בפריים העולמי מוגדר על ידי זוויות אוילר. ניתן להגדיר זוויות אוילר בדרכים רבות. כדי לתקן את הטעות, תוכנית חייבת לפעול בקפדנות לפי מוסכמות זווית אוילר שמתוארות כאן.

המיקום מעל לפני השטח של כדור הארץ מגדיר מסגרת מקומית קבועה XYZ, כאשר Z היא למעלה ואורתוגונלית לפני השטח של כדור הארץ, X הוא החלק המזרחי האמיתי ו-Y הוא צפון מוחלט. הכיוון מוגדר ביחס ל'מסגרת המקומית' הקבועה, וזוויות אוילר הן סיבובים סביב צירי ה-XYZ הקבועים. לכן, כיוון התנוחה אינו מוגדר בקטבים. כלומר, כיוון של צילום פנורמי עם זוויות (0, 0, 0) הפיקסל המרכזי יפנה לכיוון צפון, עם קו המשווה של הצילום הפנורמי המקביל לפני השטח של כדור הארץ.

הזוויות של אוילר מספק מיפוי מנקודות ב'מסגרת הפוטוספרית' (המסובבת) לנקודות ב'מסגרת המקומית' (הקבועה):
 
מטריצת סיבוב נבנתה מזוויות אוילר באופן הבא (חשוב לשמר את הסדר הזה):

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

כאשר: R_*(t) הוא סיבוב יד ימין מסביב לציר בעל השם:

R_Z(angle) = [ cos(angle), -sin(angle)









כאשר: Z = למעלה, X = מזרח, Y = צפון.

חשוב לשמר את הסדר הבא:

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

כי סיבובים הם לא פעולות קומוטטיביות.

שים לב שזווית הכותרת זהה לכותרת רגילה של מצפן.

קובצי עזר

Adobe XMP רגיל: http://www.adobe.com/devnet/xmp.html