這裡描述的全景命名空間包含 製作及呈現全景相片的相關資訊 有時也稱為全景 使用 Android 4.2 相機的 360 度全景相片功能製作的畫面 中繼資料必須序列化並嵌入全景相片中 這項指令會 Adobe XMP 標準 (請參閱本頁結尾的參考資料)。
命名空間 URI 為 http://ns.google.com/photos/1.0/panorama/
中繼資料屬性
下方的圖表和表格顯示 Google GPano 參數編輯及瀏覽全景相片時,別忘了 然後按照本文件後續說明,驗證並更新中繼資料。 指定姿勢和初始標題欄位時,請務必遵循 歐拉角慣例 本文件。
請注意,Google 產品僅支援球面投影。 目前只有其他方支援其他投影。
球面投影
圓柱投影
請注意,如果圓柱體圖像的頂端位於地平線上方, CroppedAreaTopPixels 必須為負值。CroppedAreaTopPixels 的值為 0 可將圖片的頂端置於水平線。下列正值: CroppedAreaTopPixels 會將圖片頂端放在水平線下方。
GPano 參數參照
名稱 | 類型 | 必填 | 預設值 (觀眾假設) |
資源說明 | 如果圖片經過修改,敬請採取行動 |
---|---|---|---|---|---|
GPano:UsePanoramaViewer | 布林值 | 否 | 是 | 是否透過全景相片檢視器 (而非一般平面圖片) 顯示這張圖片。您可以根據使用者的偏好或拼接軟體來指定。顯示或擷取圖片的應用程式可能會選擇忽略這則訊息。 | 比例/裁剪: 不變。如果視野低於某個值,應用程式可能會決定將這個選項切換至 False。 |
GPano:CaptureSoftware | 字串 | 否 | 不適用 | 如果拍攝作業使用行動裝置上的應用程式 (例如 Android 手機) 完成,請提供所用應用程式名稱 (例如「全景相片」) 的名稱。如果是手動擷取來源圖片 (例如在三腳架上使用數位單眼相機),則這個欄位應留空。 | 不適用 |
GPano:StitchingSoftware | 字串 | 否 | 不適用 | 用來製作最終全景相片的軟體。這個值有時可能與 GPano:CaptureSoftware 的值相同。 | 不適用 |
GPano:ProjectionType | 開啟文字選項 | 是 |
等長方形 |
圖片檔使用的投影類型。Google 產品目前僅支援等號值。 | 縮放比例/裁剪:不改變。 |
GPano:PoseHeadingDegrees | 真的 | 否,但在 Google 地圖上顯示這是必要項目 | 不適用 | 指南針方向,為圖片中間以順時針角度測量。值必須介於 1 至 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 | 日期 | 否 | 不適用 | 您在全景相片中製作的第一張圖片的日期和時間。 | 縮放比例/裁剪:不改變。 |
GPano:LastPhotoDate | 日期 | 否 | 不適用 | 全景相片中最後一張圖片的日期和時間。 | 縮放比例/裁剪:不改變。 |
GPano:SourcePhotosCount | 整數 | 否 | 不適用 | 用來製作全景相片的來源圖片數量。 | 縮放比例/裁剪:不改變。 |
GPano:ExposureLockUsed | 布林值 | 否 | 不適用 | 拍攝個別來源相片時,無論是否鎖定相機的曝光設定。 | 不適用 |
GPano:CroppedAreaImageWidthPixels | 整數 | 是 | 不適用 | 圖片的原始寬度 (以像素為單位,與未編輯圖片的實際寬度相等)。請參閱上圖。 | 縮放/裁剪:請更新這個屬性,以反映圖片的新大小。 |
GPano:CroppedAreaImageHeightPixels | 整數 | 是 | 不適用 | 圖片的原始高度 (以像素為單位) (與未編輯圖片的實際高度相同)。請參閱上圖。 | 縮放/裁剪:請更新這個屬性,以反映圖片的新大小。 |
GPano:FullPanoWidthPixels | 整數 | 是 | 不適用 | 圖片的原始完整寬度。如果只拍攝了部分全景相片,這會指定整張相片的寬度。請參閱上圖。 | 裁剪:沒有變更。 比例:必須據此適當縮放。 |
GPano:FullPanoHeightPixels | 整數 | 是 | 不適用 | 圖片的原始完整高度。如果只拍攝了部分全景相片,這個值可指定整個全景相片涵蓋的高度。請參閱上圖。 | 裁剪:沒有變更。 比例:必須據此適當縮放。 |
GPano:CroppedAreaLeftPixels | 整數 | 是 | 不適用 | 欄中裁剪自完整大小的全景相片中圖片的左側邊緣。請參閱上圖。 | 裁剪:如果圖片的左側裁剪有所變更,這個值必須隨之更新。 縮放:這需要正確縮放。 |
GPano:CroppedAreaTopPixels | 整數 | 是 | 不適用 | 從完整大小的全景相片中裁剪圖片頂端邊緣的列。請參閱上圖。 | 裁剪:如果圖片的頂端裁剪有所變更,這個值必須隨之更新。 縮放:這需要正確縮放。 |
GPano:InitialCameraDolly | 真的 | 否 | 0 | 這個選用參數會沿著視線範圍將虛擬相機位置從全景相片中心移開。後側表面位置以 -1.0 值表示,前端位置則以 1.0 表示。如果是一般檢視,此參數應設為 0。 | 不適用 |
完整全景相片範例
非程式設計師可將下方的中繼資料範例添加到現有的完整相片中 的球體 (360 度 x 180 度),僅進行小幅修改。 你可以使用圖像編輯產品 (例如 Adobe Photoshop) 執行這項作業。
- 變更 4000 和 2000 的任何出現次數,以符合相應的圖片寬度和高度 (以像素為單位)
- 如果您希望 Google 地圖顯示您的全景相片,請更新 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。
Euler Angles 總覽
全景相片在世界景框中的方向是由 Euler 定義 不同角度。有很多方式可以定義歐拉角。正確答案是程式必須嚴格遵循 會依照本文說明的歐拉角慣例
地球表面上方的位置,會定義一個固定的「 "XYZ,Z 上面 Z 代表地球表面的正反兩面,XYZ 則是 正東,Y 為是北方。方向是相對於這個 固定的「local frame」之後,Euler 就會開始旋轉這些角度 固定 XYZ 軸。因此極點並未定義位置方向。這個 表示有角度 (0、0、0) 的全景相片會定向, 中心像素朝北方,全景相片的赤道平行, 地平面調整
橡皮擦角度則提供 (旋轉)「相片」中各點的對應。
球面框設定為 (固定)「local frame」中的點:
旋轉矩陣以歐拉角建構而成,如下所示:
會按照 (請務必保留這個順序):
R = R_Z(-標題) * R_X(音調) * R_Y(捲動)
其中:R_*(t) 是指根據已命名軸右手的旋轉角度:
R_Z(angle) = [ cos(angle, angle, angle, angle, angle, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0
(angle, angle, angle, 0, 0, 0
, 0, 0, 0, 0
, 0, 0
(以, angle, angle, angle, angle, 0, 0
, 0, 0, 0, 0, 0
, 0, 0
, 以 0 0
(以內 大於角度) 0
, -sin(angle), 0
sin(angle)、
其中:Z = 向上,X = 東部,Y = 北。
請務必保留以下順序:
R = R_Z(-標題) * R_X(音調) * R_Y(捲動)
因為旋轉並非可交換的
請注意,頂角與標準指南針方向相同。
參考資料
Adobe XMP 標準:http://www.adobe.com/devnet/xmp.html