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

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

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

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

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

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

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

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

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

מסמך עזר של GPano

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

מלבן

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

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

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

  1. לשנות את כל המופעים של 4,000 ו-2,000 כך שיתאימו לרוחב ולגובה המתאימים של התמונה בפיקסלים
  2. לעדכן את PoseכותרתDegrees אם אתם רוצים לאפשר למפות 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 נכשל, אל תציגו את התמונה כתמונה פנורמית ב-360° כי היא עברה שינויים לא מתאימים שעלולים לגרום לעיוותים שליליים
  5. אם שלב 3 עובר בהצלחה, יחס הגובה-רוחב זהה וכל ערכי התגים המשויכים צריכים להתאים לגודל התמונה החדש:
    CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels.

סקירה כללית של Euler זוויות

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

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

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

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

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











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

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

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

כיוון שסיבובים אינם משתנים.

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

קובצי עזר

תקן Adobe XMP: http://www.adobe.com/devnet/xmp.html