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