فضای نام پانوراما شرح داده شده در اینجا حاوی ویژگی هایی است که اطلاعاتی را در مورد ایجاد و ارائه تصاویر پانوراما ارائه می دهد که گاهی اوقات به آنها پانوراما نیز گفته می شود، مانند مواردی که توسط ویژگی Photo Sphere در دوربین Android 4.2 ایجاد می شود. ابرداده ها باید بصورت سریالی و در داخل عکس کروی تعبیه شوند که توسط استاندارد Adobe XMP توضیح داده شده است (به منابع در انتهای این صفحه مراجعه کنید).
URI فضای نام http://ns.google.com/photos/1.0/panorama/
است
ویژگی های فراداده
نمودارها و جدول زیر ویژگی های عکس کروی محصور شده توسط پارامترهای GPano را نشان می دهد. هنگام ویرایش و مشاهده عکسهای پانوراما، لطفاً همانطور که بعداً در این سند توضیح داده شده است، فوقداده را مطابق با آن تأیید و بهروزرسانی کنید. هنگام مشخص کردن فیلدهای پوز و عنوان اولیه، لطفاً از قراردادهای زاویه اویلر که بعداً در این سند بحث شده است، پیروی کنید.
توجه داشته باشید که محصولات Google فقط از پیشبینیهای کروی پشتیبانی میکنند. پیش بینی های اضافی در حال حاضر فقط توسط سایر طرف ها پشتیبانی می شود.
برآمدگی های کروی
برآمدگی های استوانه ای
توجه داشته باشید که اگر بالای یک تصویر استوانه ای بالای افق باشد، CroppedAreaTopPixels باید منفی باشد. مقدار 0 برای CroppedAreaTopPixels بالای تصویر را در افق قرار می دهد. مقدار مثبت CroppedAreaTopPixels بالای تصویر را در زیر افق قرار می دهد.
مرجع پارامتر GPano
نام | تایپ کنید | مورد نیاز | مقدار پیش فرض (بیننده فرض کرد) | توضیحات ملک | در صورت اصلاح تصویر، اقدام لازم است |
---|---|---|---|---|---|
GPano:UsePanoramaViewer | بولی | خیر | درست است | اینکه آیا این تصویر در یک نمایشگر عکس کروی نشان داده شود یا نه به عنوان یک تصویر مسطح معمولی. این ممکن است بر اساس ترجیحات کاربر یا توسط نرم افزار دوخت مشخص شود. برنامهای که تصویر را نمایش میدهد یا جذب میکند ممکن است این را نادیده بگیرد. | مقیاس / محصول: بدون تغییر. اگر میدان دید کمتر از مقدار مشخصی باشد، ممکن است یک برنامه تصمیم بگیرد که این مورد را به False تغییر دهد. |
GPano: نرم افزار Capture | رشته | خیر | n/a | اگر عکسبرداری با استفاده از یک برنامه کاربردی در یک دستگاه تلفن همراه، مانند تلفن Android، انجام شده است، نام برنامه مورد استفاده (مانند "Photo Sphere"). اگر تصاویر منبع به صورت دستی گرفته شده باشند، مانند استفاده از یک DSLR روی سه پایه، این باید خالی بماند. | n/a |
GPano:StitchingSoftware | رشته | خیر | n/a | نرم افزاری که برای ایجاد عکس کروی نهایی استفاده شد. این ممکن است گاهی اوقات همان مقدار GPano:CaptureSoftware باشد. | n/a |
GPano:ProjectionType | انتخاب متن را باز کنید | بله | مستطیل شکل | نوع پروجکشن مورد استفاده در فایل تصویری. محصولات Google در حال حاضر فقط از مقدار equirectangular پشتیبانی می کنند. | مقیاس / محصول: بدون تغییر. |
GPano: PoseHeadingDegrees | واقعی | خیر، اما برای نمایش در Google Maps لازم است | n/a | جهت قطب نما، در جهت جهت عقربه های ساعت از شمال، برای مرکز تصویر اندازه گیری می شود. مقدار باید >= 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 | واقعی | خیر | n/a | میدان دید اولیه افقی که بیننده باید نمایش دهد (در درجه). این شبیه به سطح زوم است. | n/a |
GPano:InitialVerticalFOVDegrees | واقعی | خیر | n/a | میدان دید عمودی اولیه که بیننده باید نمایش دهد (در درجه). این شبیه به سطح زوم است. اگر هر دو GPano:InitialHorizontalFOVDegrees و GPano:InitialVerticalFOVDegrees وجود داشته باشند، GPano:InitialHorizontalFOVDegrees اولویت دارد. اگر قرار است محتوای شما با نسبت های چندگانه نمایش داده شود، فقط از InitialVerticalFOVDegrees استفاده کنید و ترجیح می دهید میدان دید عمودی ثابت بماند در حالی که میدان دید افقی ممکن است تغییر کند. محصولات Google در حال حاضر از این فیلد پشتیبانی نمی کنند. | n/a |
GPano:FirstPhotoDate | تاریخ | خیر | n/a | تاریخ و زمان اولین تصویر ایجاد شده در عکس کروی. | مقیاس / محصول: بدون تغییر. |
GPano:LastPhotoDate | تاریخ | خیر | n/a | تاریخ و زمان آخرین تصویر ایجاد شده در عکس کروی. | مقیاس / محصول: بدون تغییر. |
GPano:SourcePhotosCount | عدد صحیح | خیر | n/a | تعداد تصاویر منبع استفاده شده برای ایجاد عکس کروی. | مقیاس / محصول: بدون تغییر. |
GPano:ExposureLockUsed | بولی | خیر | n/a | زمانی که عکسهای منفرد گرفته میشوند، خواه تنظیم نوردهی دوربین قفل شده باشد یا نه. | n/a |
GPano:CroppedAreaImageWidthPixels | عدد صحیح | بله | n/a | عرض اصلی بر حسب پیکسل تصویر (برابر با عرض تصویر واقعی برای تصاویر ویرایش نشده). نمودارهای بالا را ببینید. | scale/crop: این ویژگی باید به روز شود تا اندازه جدید تصویر را منعکس کند. |
GPano:CroppedAreaImageHeightPixels | عدد صحیح | بله | n/a | ارتفاع اصلی بر حسب پیکسل تصویر (برابر با ارتفاع واقعی تصویر برای تصاویر ویرایش نشده). نمودارهای بالا را ببینید. | scale/crop: این ویژگی باید به روز شود تا اندازه جدید تصویر را منعکس کند. |
GPano: FullPanoWidthPixels | عدد صحیح | بله | n/a | عرض کامل اصلی که تصویر از آن بریده شده است. اگر فقط یک عکس پانورامای جزئی گرفته میشد، این نشان میدهد که عرض کامل عکس پانوراما چقدر بوده است. نمودارهای بالا را ببینید. | محصول: بدون تغییر. مقیاس: این به درستی باید بر اساس آن مقیاس بندی شود. |
GPano:FullPanoHeightPixels | عدد صحیح | بله | n/a | ارتفاع کامل اصلی که تصویر از آن بریده شده است. اگر فقط یک عکس پانورامای جزئی گرفته شده باشد، ارتفاع کامل عکس پانوراما چقدر بوده است. نمودارهای بالا را ببینید. | محصول: بدون تغییر. مقیاس: این به درستی باید بر اساس آن مقیاس بندی شود. |
GPano: CroppedAreaLeftPixels | عدد صحیح | بله | n/a | ستونی که لبه سمت چپ تصویر از عکس کروی در اندازه کامل بریده شده است. نمودارهای بالا را ببینید. | crop: اگر برش سمت چپ تصویر تغییر کرد، این مقدار باید به روز شود. مقیاس: این به درستی باید بر اساس آن مقیاس بندی شود. |
GPano: CroppedAreaTopPixels | عدد صحیح | بله | n/a | ردیفی که لبه بالایی تصویر از عکس کروی در اندازه کامل بریده شده است. نمودارهای بالا را ببینید. | برش: اگر برش بالای تصویر تغییر کند، این مقدار باید به روز شود. مقیاس: این به درستی باید بر اساس آن مقیاس بندی شود. |
GPano:InitialCameraDolly | واقعی | خیر | 0 | این پارامتر اختیاری موقعیت دوربین مجازی را در امتداد خط دید و از مرکز عکس کروی دور می کند. موقعیت سطح عقب با مقدار -1.0 نشان داده می شود، در حالی که موقعیت سطح جلو با 1.0 نشان داده می شود. برای مشاهده عادی، این پارامتر باید روی 0 تنظیم شود. | n/a |
نمونه ای از یک عکس کروی کامل
غیر برنامه نویسان می توانند نمونه ابرداده زیر را به عکس پانورامای کامل موجود (360 درجه در 180 درجه) تنها با تغییرات کوچک اضافه کنند. این کار را می توان در محصولات ویرایش تصویر مانند Adobe Photoshop انجام داد.
- هر رخداد 4000 و 2000 را تغییر دهید تا با عرض و ارتفاع تصویر شما در پیکسل مطابقت داشته باشد.
- اگر می خواهید Google Maps بتواند عکس کروی شما را نشان دهد PoseHeadingDegrees را به روز کنید. در غیر این صورت، می توانید به صورت اختیاری این پارامتر را حذف کنید
- به روز رسانی یا حذف پارامترهای اختیاری (همانطور که در بالا ذکر شد)
<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>
استحکام در ویرایش تصویر
برای قوی بودن، برنامههایی که عکسهای کروی را در بیننده نمایش میدهند باید بررسی کنند که آیا عکس کروی اصلی توسط برنامهای بدون بهروزرسانی ابرداده مقیاسبندی شده است یا خیر. این کار در مراحل زیر قابل انجام است:
- اطمینان حاصل کنید که برچسب CroppedAreaImageWidthPixels برابر با عرض واقعی تصویر است.
- اطمینان حاصل کنید که تگ CroppedAreaImageHeightPixels برابر با ارتفاع واقعی تصویر است
- اگر مرحله 1 یا 2 ناموفق بود، بررسی کنید که آیا نسبت ابعاد تصویر حفظ شده است یا خیر
- اگر مرحله 3 ناموفق بود، تصویر را به صورت عکس کروی نشان ندهید، زیرا به روشی ناسازگار تبدیل شده است که باعث ایجاد اعوجاج بد می شود.
- اگر مرحله 3 بگذرد، نسبت ابعاد معادل است و تمام مقادیر تگ مرتبط زیر باید برای متناسب با اندازه تصویر جدید مقیاس شوند:
CroppedAreaImageWidthPixels، CroppedAreaImageHeightPixels، FullPanoWidthPixels، FullPanoHeightPixels، CroppedAreaLeftPixels، CroppedAreaRightPixels.
مروری بر زوایای اویلر
جهت عکس کروی در قاب جهان با زوایای اویلر تعریف می شود. زوایای اویلر را می توان به روش های مختلفی تعریف کرد. برای درست بودن، یک برنامه باید دقیقاً از قراردادهای زاویه اویلر که در اینجا توضیح داده شده است پیروی کند.
موقعیت بالای سطح زمین یک "قاب محلی" ثابت XYZ را تعریف می کند، جایی که Z در بالا و متعامد با سطح زمین است، X شرق واقعی و Y شمال واقعی است. جهت گیری نسبت به این "قاب محلی" ثابت تعریف شده است و زوایای اویلر چرخش هایی حول محورهای ثابت XYZ هستند. بنابراین جهت گیری در قطب ها تعریف نشده است. این بدان معناست که یک عکس کروی با زوایای (0، 0، 0) به گونه ای جهت گیری می شود که پیکسل مرکزی به سمت شمال با استوای عکس کروی موازی با سطح زمین باشد.
زوایای اویلر یک نقشه برداری از نقاطی در "قاب عکس کروی" (چرخش شده) به نقاطی در "قاب محلی" (ثابت) ارائه می دهد:
یک ماتریس چرخش از زوایای اویلر به شرح زیر ساخته می شود (حفظ این ترتیب مهم است):
R = R_Z (-heading) * R_X (پیچ) * R_Y (رول)
جایی که: R_*(t) یک چرخش سمت راست حول محور نامگذاری شده است:
R_Z(زاویه) = [ cos(زاویه)، -sin(زاویه)، 0
sin(زاویه)، cos(زاویه)، 0
0، 0، 1 ]
R_X(زاویه) = [ 1، 0، 0،
0، cos (زاویه)، -sin (زاویه)،
0، sin(زاویه)، cos(زاویه)]
R_Y(زاویه) = [ cos(زاویه)، 0، sin(زاویه)،
0، 1، 0،
-sin(زاویه)، 0، cos(زاویه)]
و کجا: Z = بالا، X = شرق، Y = شمال.
حفظ این نظم بسیار مهم است:
R = R_Z (-heading) * R_X (پیچ) * R_Y (رول)
از آنجا که چرخش جابجایی نیست.
توجه داشته باشید که زاویه هدینگ همانند یک قطب نمای استاندارد است.
مراجع
استاندارد Adobe XMP: http://www.adobe.com/devnet/xmp.html