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

Không gian tên toàn cảnh được mô tả ở đây chứa các thuộc tính cung cấp thông tin về việc tạo và kết xuất ảnh toàn cảnh 360 độ, đôi khi còn được gọi là ảnh toàn cảnh, chẳng hạn như những ảnh toàn cảnh được tạo bởi tính năng Ảnh toàn cảnh 360 độ trong máy ảnh Android 4.2. 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 độ như mô tả trong tiêu chuẩn 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 cho thấy các thuộc tính ảnh toàn cảnh 360 độ do các Tham số GPano đóng gói. Khi chỉnh sửa và xem ảnh toàn cảnh 360 độ, hãy nhớ xác minh và cập nhật siêu dữ liệu một cách phù hợp như được mô tả ở phần sau của tài liệu này. Khi chỉ định các trường tư thế và tiêu đề ban đầu, hãy nhớ tuân theo quy ước về góc của Euler được thảo luận sau trong tài liệu này.

Xin lưu ý rằng các sản phẩm của Google chỉ hỗ trợ phép chiếu hình cầu. Các bên khác hiện chỉ được các bên khác hỗ trợ phép chiếu.

Chiếu hình cầu

Hình chiếu hình trụ

Lưu ý rằng nếu phần trên cùng của hình ảnh hình trụ nằm phía trên đường chân trời, CroppedAreaTopPixels phải có giá trị âm. Giá trị 0 cho CropedAreaTopPixels sẽ đặt phần đầu hình ảnh ở đường chân trời. Một giá trị dương của CroppedAreaTopPixels sẽ đặt phần trên cùng của hình ảnh xuống dưới đường chân trời.

Tài liệu tham khảo về tham số GPano

Tên Loại Bắt buộc Giá trị mặc định
(giả định người xem)
Mô tả tài sản Việc cần làm nếu hình ảnh đã bị chỉnh sửa
GPano:Sử dụng Toàn cảnh Boolean Không Đúng Liệu có hiện hình ảnh này trong trình xem ảnh toàn cảnh 360 độ thay vì hình ảnh phẳng thông thường hay không. Điều này có thể được chỉ định dựa trên tùy chọn của người dùng hoặc bằng phần mềm ghép. Ứng dụng hiển thị hoặc nhập hình ảnh có thể chọn bỏ qua điều này. tỷ lệ/Cắt:
Không thay đổi. Một ứng dụng có thể quyết định chuyển điều này thành Sai nếu trường của chế độ xem 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 quá trình chụp được thực hiện bằng một ứng dụng trên thiết bị di động, chẳng hạn như điện thoại Android, thì tên của ứng dụng đã được sử dụng (chẳng hạn như “Ảnh toàn cảnh 360 độ”). Hãy để trống nếu ảnh nguồn được chụp theo cách thủ công, chẳng hạn như bằng cách sử dụng máy ảnh 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 dùng để tạo ảnh toàn cảnh 360 độ cuối cùng. Đôi khi, giá trị này có thể giống 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 chữ nhật cân bằng

Loại hình 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 cầu toàn cảnh. tỷ lệ/Cắt: Không thay đổi.
GPano:Mức độ phân biệt nhân tạo Thực Không, nhưng bắt buộc phải 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, cho tâm hình ảnh. Giá trị phải là >= 0 và < 360. tỷ lệ/Cắt: Không thay đổi.
GPano:PosePitchDegrees Thực Không 0 cao độ, được đo bằng độ cao phía trên đường chân trời, chính giữa trung tâm của hình ảnh. Giá trị phải là >= -90 và <= 90. 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ó mức đường chân trời là 0. Khi cuộn tăng, đường chân trời xoay ngược chiều kim đồng hồ trong hình ảnh. Giá trị phải là > -180 và <= 180. tỷ lệ/Cắt: Không thay đổi.
GPano:Tên gọi ban đầu Số nguyên Không 0 Góc tiêu đề của chế độ xem ban đầu theo độ theo chiều kim đồng hồ so với thế giới thực phía Bắc, không tương ứng với trung tâm toàn cảnh. tỷ lệ/Cắt: Không thay đổi.
GPano:InitialViewPitchDegrees Số nguyên Không 0 Góc độ cao của chế độ xem ban đầu theo độ trên đường chân trời trong thế giới thực, không tương ứng với trung tâm toàn cả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 theo độ mà đường chân trời trong thế giới thực là 0. Khi cuộn tăng, đường chân trời xoay ngược chiều kim đồng hồ trong chế độ xem. tỷ lệ/Cắt: Không thay đổi.
GPano:InitialHorizontalFOVdegrees Thực Không không áp dụng Trường nhìn ngang ban đầu mà người xem sẽ hiển thị (tính bằng độ). 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à người xem sẽ hiển thị (theo độ). Mức độ này tương tự như mức thu phóng. Nếu có cả GPano:InitialHorizontalFOVDegrees và GPano:InitialVerticalFOVDegrees, GPano:InitialHorizontalFOVDegrees sẽ được ưu tiên. Chỉ sử dụng InitialVerticalFOVDegrees 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 không đổi trong khi trường nhìn ngang có thể thay đổi. 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 độ. tỷ lệ/Cắt: Không thay đổi.
GPano:LastPhotoDate Ngày Không không áp dụng Ngày và giờ cho hình ảnh cuối cùng được tạo trong ảnh toàn cảnh 360 độ. tỷ lệ/Cắt: Không thay đổi.
GPano:SourcePhotosCount Số nguyên Không không áp dụng Số lượng hình ảnh nguồn được dùng để tạo ảnh toàn cảnh 360 độ. 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, liệu chế độ cài đặt độ phơi sáng của máy ảnh có bị 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 chiều rộng của hình ảnh thực tế đối với các hình ảnh chưa chỉnh sửa). Xem sơ đồ ở trên. tỷ lệ/Cắt: Thuộc tính này cần được cập nhật để 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 chiều cao của hình ảnh thực tế đối với hình ảnh chưa chỉnh sửa). Xem sơ đồ ở trên. tỷ lệ/Cắt: Thuộc tính này cần được cập nhật để 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 đầy đủ ban đầu mà hình ảnh đã bị cắt. Nếu chỉ chụp một ảnh toàn cảnh 360 độ một phần, chế độ này sẽ chỉ định chiều rộng của toàn bộ ảnh toàn cảnh 360 độ. Xem sơ đồ ở trên. cắt: Không thay đổi.
tỷ lệ: Cần điều chỉnh tỷ lệ đúng cách.
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 ảnh toàn cảnh 360 độ một phần, chế độ này sẽ chỉ định chiều cao của toàn bộ ảnh toàn cảnh 360 độ. Xem sơ đồ ở trên. cắt: Không thay đổi.
tỷ lệ: Cần điều chỉnh tỷ lệ đúng cách.
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 sơ đồ ở trên. Cắt: Nếu phần bên trái của hình ảnh bị thay đổi, thì bạn phải cập nhật giá trị này.
tỷ lệ: Bạn cần điều chỉnh tỷ lệ này 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 từ ảnh toàn cảnh 360 độ có kích thước đầy đủ. Xem sơ đồ ở trên. cắt: Nếu phần cắt trên cùng của hình ảnh bị thay đổi, thì bạn phải cập nhật giá trị này.
tỷ lệ: Bạn cần điều chỉnh tỷ lệ này cho phù hợp.
GPano:InitialCameraDolly Thực Không 0 Thông số không bắt buộc này sẽ di chuyển vị trí máy ảnh ảo dọc theo tầm nhìn, ra xa trung 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, thông số này phải được đặt thành 0. không áp dụng

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

Những người không phải là lập trình viên có thể thêm ví dụ về siêu dữ liệu vào ảnh toàn cảnh 360 độ hiện có (360 độ x 180 độ) mà chỉ cần sửa đổi một chút. 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 từ 4000 và 2000 để khớ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 PoseHeaderDegrees nếu bạn muốn Google Maps có thể hiển thị ảnh toàn cảnh 360 độ của mình; nếu không, bạn có thể xoá thông số này nếu muốn
  3. cập nhật hoặc xoá các tham số không bắt buộc (như 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>

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

Để chắc chắn, các chương trình hiển thị ảnh toàn cảnh 360 độ trong trình xem nên kiểm tra xem ảnh toàn cảnh 360 độ ban đầu có được ứng dụng mở rộng mà không cập nhật siêu dữ liệu hay không. Bạn có thể thực hiện việc này trong các bước sau:

  1. đảm bảo rằng thẻ CropedAreaImageWidthPixels bằng với chiều rộng hình ảnh thực tế
  2. đảm bảo rằng thẻ CropedAreaImageHeightPixels 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ó được giữ nguyên hay không
  4. Nếu bước 3 không thành công, đừng hiển thị hình ảnh dưới dạng ảnh toàn cảnh 360 độ vì hình ảnh đó đã được chuyển đổi theo cách không tương thích sẽ gây ra tình trạng méo hình
  5. Nếu bước 3 trôi qua, tỷ lệ khung hình sẽ tương đương và tất cả giá trị thẻ 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:
    CropedAreaImageWidthPixels, CropedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CropedAreaLeftPixels, CropedAreaRightPixels.

Tổng quan về góc Euler

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

Vị trí phía trên bề mặt trái đất xác định một && khung cố định; cục bộ; XYZ, trong đó Z hướng lên và trực giao với bề mặt trái đất, X là đúng về phía đông và Y là đúng về phía bắc. Hướng được xác định tương đối với khung "địa phương&quot cố định này; và các góc Euler là độ xoay xung quanh các trục XYZ cố định này. Do đó, hướng của pose không được xác định ở các cực. Điều này có nghĩa là ảnh toàn cảnh 360 độ có góc (0, 0, 0) sẽ được định hướng sao cho pixel trung tâm nằm ở phía bắc với 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 của Euler cung cấp liên kết từ các điểm trong (khung) xoay "ảnh toàn cảnh" đến các điểm trong (cố định) "khung cục bộ":

Ma trận xoay được xây dựng từ các góc Euler như sau (điều quan trọng là để duy trì thứ tự này):

R = R_Z (tiêu đề) * R_X(thuyết trình) * R_Y(cuộn)

trong đó: R_*(t) là phép quay tay phải quanh trục được đặt tên:

    R_Z(angle) = [ cos(angle), -sin(angle),  0
                   sin(angle),  cos(angle),  0
                   0,       0,  1 ]
 
    R_X(angle) = [ 1,       0,      0,
                   0,  cos(angle), -sin(angle),
                   0,  sin(angle),  cos(angle) ]
 
    R_Y(angle) = [ cos(angle),  0,  sin(angle),
                   0,  1,       0,
                   -sin(angle),  0,  cos(angle) ]

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

Điều quan trọng là phải duy trì thứ tự sau:

R = R_Z (tiêu đề) * R_X(thuyết trình) * R_Y(cuộn)

vì xoay không phải là giao hoán.

Xin lưu ý rằng góc tiêu đề giống với một tiêu đề la bàn tiêu chuẩn.

Tệp đối chiếu

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