Siêu dữ liệu XMP của ảnh toàn cảnh 360 độ

Không gian tên ảnh toàn cảnh được mô tả ở đây chứa các thuộc tính cung cấp thông tin liên quan đến việc tạo và hiển thị ảnh toàn cảnh 360 độ, cũng đôi khi được gọi là ảnh toàn cảnh, chẳng hạn như ảnh được tạo bằng tính năng Ảnh toàn cảnh 360 độ trong máy ảnh Android 4.2. Chiến lược phát hành đĩa đơn siêu dữ liệu phải được chuyển đổi tuần tự và nhúng bên trong ảnh toàn cảnh 360 độ dưới dạng được mô tả bởi Adobe XMP (xem tài liệu tham khảo ở cuối trang này).

URI không gian tên là http://ns.google.com/photos/1.0/panorama/

Thuộc tính siêu dữ liệu

Sơ đồ và bảng dưới đây hiển thị các thuộc tính ảnh toàn cảnh 360 độ được đóng gói bởi Tham số GPano. Khi chỉnh sửa và xem ảnh toàn cảnh 360 độ, vui lòng đảm bảo xác minh và cập nhật siêu dữ liệu theo cách được mô tả ở phần sau của tài liệu này. Khi chỉ định tư thế và các trường tiêu đề ban đầu, hãy chắc chắn tuân theo quy ước góc Euler sẽ được thảo luận sau trong tài liệu này.

Lưu ý rằng các sản phẩm của Google chỉ hỗ trợ hình chiếu cầu. Thông tin dự đoán bổ sung hiện chỉ được các bên khác hỗ trợ.

Phép chiếu hình cầu

Phép chiếu hình trụ

Lưu ý rằng nếu đỉnh của hình ảnh trụ ở trên đường chân trời, CutpedAreaTopPixels phải là số âm. Giá trị bằng 0 cho CutpedAreaTopPixels sẽ đặt phần trên cùng của hình ảnh ở đường chân trời. Giá trị dương của CutpedAreaTopPixels đặt phần trên cùng của hình ảnh bên dưới đường chân trời.

Tham chiếu tham số GPano

Tên Loại Bắt buộc Giá trị mặc định
(giả định là người xem)
Nội dung mô tả về cơ sở lưu trú Việc cần làm nếu hình ảnh được sửa đổi
GPano:UsePanoramaViewer Boolean Không Đúng Liệu có hiển thị hình ảnh này trong trình xem ảnh toàn cảnh 360 độ chứ không phải dưới dạng hình ảnh phẳng thông thường. Điều này có thể được chỉ định dựa trên lựa chọn ưu tiên của người dùng hoặc bằng phần mềm ghép ảnh. Ứng dụng hiển thị hoặc nhập hình ảnh có thể chọn bỏ qua thông báo này. điều chỉnh tỷ lệ/cắt:
Không thay đổi. Ứng dụng có thể quyết định chuyển chế độ này thành False nếu trường nhìn giảm xuống dưới một giá trị nhất định.
GPano:CaptureSoftware Chuỗi Không không áp dụng Nếu chụp được thực hiện bằng ứng dụng trên thiết bị di động, chẳng hạn như điện thoại Android, tên của ứng dụng đã được sử dụng (chẳng hạn như “Ảnh toàn cảnh 360 độ”). Nên để trống trường này nếu hình ảnh nguồn được chụp thủ công, chẳng hạn như bằng cách sử dụng DSLR trên giá ba chân. không áp dụng
GPano:StitchingSoftware Chuỗi Không không áp dụng Phần mềm được dùng để tạo ảnh toàn cảnh 360 độ hoàn thiện. Đôi khi, giá trị này có thể có cùng giá trị với giá trị của GPano:CaptureSoftware. không áp dụng
GPano:ProjectionType Mở lựa chọn văn bản

hình cầu toàn cảnh

Loại phép chiếu được sử dụng trong tệp hình ảnh. Các sản phẩm của Google hiện chỉ hỗ trợ giá trị hình chữ nhật. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:PoseHeadingDegrees Thực Không, nhưng bắt buộc phải có để hiển thị trên Google Maps không áp dụng Tiêu đề la bàn, được đo theo độ theo chiều kim đồng hồ từ hướng Bắc, để đặt ở giữa hình ảnh. Giá trị phải lớn hơn hoặc bằng 0 và nhỏ hơn 360 độ. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:PosePitchDegrees Thực Không 0 Cao độ, được đo bằng độ trên đường chân trời, cho tâm của hình ảnh. Giá trị phải lớn hơn hoặc bằng -90 và nhỏ hơn hoặc bằng 90. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:PoseRollDegrees Thực Không 0 Cuộn, được đo bằng độ, của hình ảnh có ngang bằng với đường chân trời bằng 0. Khi cuộn tăng, đường chân trời sẽ quay ngược chiều kim đồng hồ trong hình ảnh. Giá trị phải > -180 và <= 180. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:InitialViewHeadingDegrees Số nguyên Không 0 Góc tiêu đề của chế độ xem ban đầu tính theo độ theo chiều kim đồng hồ từ hướng Bắc trong thực tế, không so với tâm toàn cảnh. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:InitialViewPitchDegrees Số nguyên Không 0 Góc cao độ của ảnh chụp ban đầu tính bằng độ trên đường chân trời trong thế giới thực, không so với tâm toàn cảnh. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:InitialViewRollDegrees Số nguyên Không 0 Góc cuộn của chế độ xem ban đầu tính bằng độ khi ngang với đường chân trời trong thế giới thực bằng 0. Khi cuộn tăng, đường chân trời sẽ quay ngược chiều kim đồng hồ trong chế độ xem. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:InitialHorizontalFOVDegrees Thực Không không áp dụng Trường nhìn ban đầu theo chiều ngang mà trình xem sẽ hiển thị (theo độ). Mức này tương tự như mức thu phóng. không áp dụng
GPano:InitialVerticalFOVDegrees Thực Không không áp dụng Trường nhìn dọc ban đầu mà trình xem sẽ hiển thị (theo độ). Mức này tương tự như mức thu phóng. Nếu có cả GPano:InitialHorizontalFOV°S và GPano:InitialVerticalFOV dị Chỉ sử dụng initialVerticalFOV°s nếu nội dung của bạn được hiển thị ở nhiều tỷ lệ khung hình và bạn muốn trường nhìn dọc giữ nguyên trong khi trường nhìn ngang có thể thay đổi. Các sản phẩm của Google hiện không hỗ trợ trường này. không áp dụng
GPano:FirstPhotoDate Ngày Không không áp dụng Ngày và giờ cho hình ảnh đầu tiên được tạo trong ảnh toàn cảnh 360 độ. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:LastPhotoDate Ngày Không không áp dụng Ngày và giờ của hình ảnh cuối cùng được tạo trong ảnh toàn cảnh 360 độ. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:SourcePhotosCount Số nguyên Không không áp dụng Số hình ảnh nguồn được dùng để tạo ảnh toàn cảnh 360 độ. điều chỉnh tỷ lệ/cắt: Không thay đổi.
GPano:ExposureLockUsed Boolean Không không áp dụng Khi từng ảnh nguồn được chụp, cho dù chế độ phơi sáng của máy ảnh có được khoá hay không. không áp dụng
GPano:CroppedAreaImageWidthPixels Số nguyên không áp dụng Chiều rộng ban đầu tính bằng pixel của hình ảnh (bằng với chiều rộng của hình ảnh thực tế đối với hình ảnh chưa chỉnh sửa). Xem biểu đồ ở trên. điều chỉnh tỷ lệ/cắt: Bạn cần cập nhật thuộc tính này để phản ánh kích thước mới của hình ảnh.
GPano:CroppedAreaImageHeightPixels Số nguyên không áp dụng Chiều cao ban đầu tính bằng pixel của hình ảnh (bằng với chiều cao thực tế của hình ảnh đối với hình ảnh chưa chỉnh sửa). Xem biểu đồ ở trên. điều chỉnh tỷ lệ/cắt: Bạn cần cập nhật thuộc tính này để phản ánh kích thước mới của hình ảnh.
GPano:FullPanoWidthPixels Số nguyên không áp dụng Chiều rộng tối đa ban đầu mà hình ảnh bị cắt. Nếu chỉ chụp một phần ảnh toàn cảnh 360 độ, thông số này sẽ chỉ định chiều rộng của ảnh toàn cảnh 360 độ. Xem biểu đồ ở trên. cắt: Không thay đổi.
tỷ lệ: Cần điều chỉnh tỷ lệ cho phù hợp.
GPano:FullPanoHeightPixels Số nguyên không áp dụng Chiều cao đầy đủ ban đầu mà hình ảnh bị cắt. Nếu chỉ chụp một phần ảnh toàn cảnh 360 độ, giá trị này sẽ xác định chiều cao của toàn bộ ảnh toàn cảnh 360 độ. Xem biểu đồ ở trên. cắt: Không thay đổi.
tỷ lệ: Cần điều chỉnh tỷ lệ cho phù hợp.
GPano:CroppedAreaLeftPixels Số nguyên không áp dụng Cột mà cạnh trái của hình ảnh đã bị cắt từ ảnh toàn cảnh 360 độ có kích thước đầy đủ. Xem biểu đồ ở trên. cắt: Nếu phần cắt bên trái của hình ảnh thay đổi, thì bạn phải cập nhật giá trị này.
tỷ lệ: Cần điều chỉnh tỷ lệ cho phù hợp.
GPano:CroppedAreaTopPixels Số nguyên không áp dụng Hàng mà cạnh trên của hình ảnh bị cắt khỏi ảnh toàn cảnh 360 độ có kích thước đầy đủ. Xem biểu đồ ở trên. cắt: Nếu phần cắt trên cùng của hình ảnh thay đổi, thì bạn phải cập nhật giá trị này.
tỷ lệ: Cần điều chỉnh tỷ lệ cho phù hợp.
GPano:InitialCameraDolly Thực Không 0 Tham số tùy chọn này di chuyển vị trí máy ảnh ảo dọc theo đường ngắm, ra khỏi tâm của ảnh toàn cảnh 360 độ. Vị trí bề mặt phía sau được biểu thị bằng giá trị -1.0, trong khi vị trí bề mặt phía trước được biểu thị bằng 1.0. Để xem bình thường, bạn phải đặt tham số này thành 0. không áp dụng

Ví dụ về ảnh toàn cảnh 360 độ đầy đủ

Những người không phải lập trình viên có thể thêm siêu dữ liệu mẫu dưới đây vào ảnh đầy đủ hiện có của họ hình cầu (360 độ x 180 độ) chỉ với những sửa đổi nhỏ. Bạn có thể thực hiện việc này trong các sản phẩm chỉnh sửa hình ảnh, chẳng hạn như Adobe Photoshop.

  1. thay đổi mọi lần xuất hiện 4000 và 2000 để phù hợp với chiều rộng và chiều cao tương ứng của hình ảnh tính bằng pixel
  2. cập nhật PoseTiêu đề Độs nếu bạn muốn Google Maps có thể hiển thị ảnh toàn cảnh 360 độ của bạn; nếu không, bạn có thể tuỳ ý xoá thông số này
  3. cập nhật hoặc xoá các thông số không bắt buộc (như được liệt kê ở trên)
<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>

Ví dụ về ảnh toàn cảnh 360 độ một phần

<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>

Tính năng chỉnh sửa hình ảnh mạnh mẽ

Để mạnh mẽ, các chương trình hiển thị ảnh toàn cảnh 360 độ ở trình xem nên kiểm tra xem ảnh toàn cảnh 360 độ gốc đã được ứng dụng chia tỷ lệ mà không cập nhật siêu dữ liệu. Bạn có thể làm theo các bước sau:

  1. đảm bảo rằng thẻ CutpedAreaImageWidthPixels bằng với chiều rộng hình ảnh thực tế
  2. đảm bảo rằng thẻ CutpedAreaImageHeightPixels bằng với chiều cao hình ảnh thực tế
  3. nếu bước 1 hoặc 2 không thành công, hãy kiểm tra xem tỷ lệ khung hình của hình ảnh đã được giữ nguyên hay chưa
  4. nếu bước 3 không thành công, không được hiển thị hình ảnh dưới dạng ảnh toàn cảnh 360 độ vì hình ảnh đã bị biến đổi theo cách không tương thích và điều này sẽ dẫn đến sự biến dạng xấu
  5. nếu bước 3 vượt qua, tỷ lệ khung hình sẽ tương đương và tất cả các giá trị thẻ được liên kết sau đây phải được điều chỉnh theo tỷ lệ cho vừa với kích thước hình ảnh mới:
    cắt

Tổng quan về góc Euler

Hướng của ảnh toàn cảnh 360 độ trong khung thế giới do Euler xác định các góc. Góc Euler có thể được xác định theo nhiều cách. Để chính xác, chương trình phải nghiêm ngặt tuân theo quy ước góc Euler được mô tả ở đây.

Vị trí phía trên bề mặt trái đất xác định chỉ số khung" XYZ, trong đó Z nằm ở trên và trực giao với bề mặt trái đất, X là hướng Đông và Y là hướng Bắc. Hướng được xác định theo "khung cục bộ" cố định và các góc Euler là góc quay xung quanh các góc này cố định các trục XYZ. Do đó hướng tư thế không xác định tại các cực. Chiến dịch này có nghĩa là ảnh toàn cảnh 360 độ có các góc (0, 0, 0) sẽ được định hướng sao cho mặt điểm ảnh ở giữa hướng bắc với đường xích đạo của ảnh toàn cảnh 360 độ song song với bề mặt trái đất.

Các góc Euler cung cấp bản đồ từ các điểm trong "ảnh" (xoay) khung hình cầu" vào các điểm trong "khung cục bộ" (cố định):
 
Ma trận xoay được dựng từ góc Euler dưới dạng sau (điều quan trọng là phải duy trì thứ tự này):

R = R_Z(-tiêu đề) * R_X(độ cao) * R_Y(cuộn)

trong đó: R_*(t) là một phép xoay thuận tay phải xung quanh trục được đặt tên:











và trong đó: Z = Lên, X = Đông, Y = Bắc.

Bạn cần phải duy trì thứ tự sau:

R = R_Z(-tiêu đề) * R_X(độ cao) * R_Y(cuộn)

vì phép xoay không mang tính giao hoán.

Lưu ý rằng góc tiêu đề giống với hướng la bàn tiêu chuẩn.

Tài liệu tham khảo

Tiêu chuẩn Adobe XMP: http://www.adobe.com/devnet/xmp.html