全景相片 XMP 中繼資料

這裡描述的全景命名空間包含 製作及呈現全景相片的相關資訊 有時也稱為全景 使用 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) 執行這項作業。

  1. 變更 4000 和 2000 的任何出現次數,以符合相應的圖片寬度和高度 (以像素為單位)
  2. 如果您希望 Google 地圖顯示您的全景相片,請更新 PoseHeadingDegrees。或者,您可以選擇移除此參數
  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>

部分全景相片範例

<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 失敗,請不要將圖像轉換成全景相片,因為這類相片經過轉換後,可能會導致失真的畫面扭曲。
  5. 如果步驟 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