Định dạng hình ảnh Ultra HDR phiên bản 1.0

Giới thiệu

Tài liệu này xác định hành vi của một định dạng tệp mới mã hoá hình ảnh bản đồ lấy phạm vi lôgarit trong tệp hình ảnh JPEG. Các trình đọc cũ không hỗ trợ định dạng mới sẽ đọc và hiển thị hình ảnh có dải động thấp thông thường từ tệp hình ảnh.Các trình đọc hỗ trợ định dạng này sẽ kết hợp hình ảnh chính với bản đồ khuếch đại và hiển thị hình ảnh có dải động cao trên màn hình tương thích.

Phần còn lại của tài liệu này mô tả các phương thức của quy trình cần thiết để sử dụng định dạng này. Nhìn chung, vòng đời của một hình ảnh tuân theo định dạng này là:

  1. Mã hoá

    1. Tạo bản đồ
    2. Nén bản đồ
    3. Tạo vùng chứa bản đồ
  2. Giải mã


Ví dụ về bố cục tệp định dạng hình ảnh Ultra HDR, với siêu dữ liệu được liên kết và thông tin về độ lệch

Hình 1. Bố cục tệp mẫu và siêu dữ liệu có liên quan.

Động lực

Mục tiêu của định dạng tệp này là mã hoá thông tin bổ sung trong các tệp hình ảnh SDR mà có thể sử dụng kết hợp với kỹ thuật hiển thị để tạo ra các phiên bản HDR tối ưu trong một tệp duy nhất.

Để thực hiện được điều này, định dạng tệp phải:

  • Có khả năng tương thích ngược để hình ảnh SDR thông thường sẽ xuất hiện đối với những người xem chưa quen thuộc.
  • Không chiếm quá nhiều không gian.

Ngoài ra, kỹ thuật hiển thị phải:

  • Không cần phải xử lý nhiều để giải mã.
  • Có thể điều chỉnh với bất kỳ tỷ lệ nào giữa các điểm trắng HDR và SDR của màn hình, có thể khác nhau đáng kể giữa các thiết bị hoặc thậm chí tạm thời trên một thiết bị.

Cuối cùng, kỹ thuật này phải có thể thực hiện tất cả các thao tác trước đó mà không cần:

  • Đang cắt đoạn video nổi bật.
  • Bóng tan chảy.
  • Thay đổi hoặc nén độ tương phản cục bộ.
  • Thay đổi mối quan hệ sắc độ tương đối (giữa các đối tượng trong cảnh).

Phần phụ thuộc

Sau đây là các nội dung tham chiếu tiêu chuẩn cho quy cách này:

Định nghĩa

  • Màn hình SDR

    • Màn hình thông thường, không được thiết kế để hiển thị nội dung HDR. Các màn hình này thường tạo độ sáng cao nhất danh nghĩa từ khoảng 400 cd/m2 trở xuống.
  • Màn hình HDR

    • Màn hình được thiết kế cho nội dung HDR. Các màn hình này thường có độ sáng cao nhất danh nghĩa lớn hơn so với màn hình SDR, thường là 800 cd/m2 trở lên và cũng thường có tỷ lệ tương phản cao hơn so với màn hình SDR.
  • Ảnh chính

    • Bản sao đầu tiên của hình ảnh trong tệp GContainer với các tệp nội dung nghe nhìn phụ được thêm vào đó. Hình ảnh chính chứa siêu dữ liệu GContainer XMP xác định thứ tự và thuộc tính của các tệp mục nội dung nghe nhìn phụ tiếp theo trong vùng chứa tệp.
  • Hình ảnh phụ

    • Các tệp mục nội dung đa phương tiện tiếp theo được thêm vào hình ảnh chính trong tệp GContainer.
  • Nén phạm vi

    • Trong nhiếp ảnh, cảnh trong thế giới thực thường có dải động cao hơn màn hình SDR có thể đại diện. Các thao tác như nén phạm vi, hay còn gọi là ánh xạ tông màu cục bộ, là cần thiết để giảm dải động của hình ảnh. Việc giảm thiểu này cần tránh làm cắt bớt vùng sáng hoặc bóng đổ, đồng thời duy trì độ tương phản cục bộ nhiều nhất có thể.Bạn cố gắng giảm kích thước của các cạnh có độ chói lớn trong hình ảnh, những yếu tố này góp phần tăng độ tương phản tổng thể, trong khi cố gắng duy trì kích thước của các cạnh có độ chói nhỏ vốn là các chi tiết.Mặc dù có nhiều cách triển khai khác nhau, nhưng thao tác như vậy là tiêu chuẩn trên hầu hết các máy ảnh kỹ thuật số hiện đại ngày nay.
  • Điểm trắng SDR

    • Độ chói tuyến tính tối đa của nội dung SDR trên màn hình tại một thời điểm nhất định.
  • Điểm trắng HDR

    • Độ chói tuyến tính tối đa của nội dung HDR trên màn hình tại một thời điểm nhất định. Giá trị này thường cao hơn điểm trắng SDR.
  • Tăng

    • Điểm trắng HDR chia cho điểm trắng SDR.
  • Mức tăng nội dung tối đa (max_content_boost theo phương trình)

    • Giá trị này cho phép trình tạo nội dung giới hạn độ sáng của hình ảnh khi hiển thị trên màn hình HDR, so với chế độ hiển thị SDR.
    • Giá trị này là một hằng số đối với một hình ảnh cụ thể. Ví dụ: nếu giá trị là 4, thì đối với mọi pixel cho trước, độ chói tuyến tính của chế độ hiển thị HDR hiển thị tối đa phải gấp 4 lần độ chói tuyến tính của chế độ hiển thị SDR. Trong thực tế, điều này có nghĩa là các phần sáng hơn của cảnh có thể xuất hiện sáng hơn gấp 4 lần.
    • Trong thực tế, giá trị này thường lớn hơn 1.0.
    • Luôn lớn hơn hoặc bằng Mức tăng nội dung tối thiểu.
  • Mức tăng nội dung tối thiểu (min_content_boost theo phương trình)

    • Giá trị này cho phép nhà sáng tạo nội dung giới hạn mức độ tối của hình ảnh khi hiển thị trên màn hình HDR, so với giao diện SDR.Giá trị này là hằng số đối với một hình ảnh cụ thể.
    • Ví dụ: nếu giá trị là 0, 5, thì đối với mọi pixel đã cho, độ chói tuyến tính của chế độ hiển thị HDR hiển thị phải (ít nhất) phải gấp 0, 5 lần độ chói tuyến tính của chế độ hiển thị SDR.
    • Trong thực tế, giá trị này thường bằng hoặc nhỏ hơn 1.
    • Luôn nhỏ hơn hoặc bằng Tăng nội dung tối đa.
  • Mức tăng cường độ sáng màn hình tối đa (max_display_boost theo phương trình)

    • Mức tăng tối đa có sẵn mà màn hình hỗ trợ tại một thời điểm nhất định. Giá trị này có thể thay đổi theo thời gian tuỳ theo chế độ cài đặt của thiết bị và các yếu tố khác, chẳng hạn như điều kiện ánh sáng xung quanh hoặc số pixel sáng trên màn hình.
    • Ví dụ: nếu giá trị này là 4.0, thì màn hình có thể hiển thị một pixel sáng hơn tối đa 4 lần so với điểm trắng SDR. Giá trị này luôn >= 1.0, vì màn hình luôn có thể hiển thị màu trắng HDR ít nhất phải sáng bằng màu trắng SDR.
  • Tăng cường hiển thị

    • Bằng với mức tăng tối đa nội dung và tăng hiển thị tối đa. Giá trị này luôn >= 1.0.
    • Ví dụ: nếu mức tăng nội dung tối đa là 4.0 và mức tăng hiển thị tối đa là 3.0, thì mức tăng cường hiển thị sẽ là 3.0. Các điểm ảnh được hiển thị sáng hơn gấp 3 lần so với SDR, vì khả năng hiển thị là yếu tố hạn chế.
    • Một ví dụ khác: nếu mức tăng nội dung tối đa là 4 và mức tăng cường hiển thị tối đa là 5, thì mức tăng cường hiển thị sẽ là 4.0. Các pixel được hiển thị sáng hơn gấp 4 lần so với SDR, vì ý định của nội dung là yếu tố hạn chế.
  • Hiển thị HDR mục tiêu

    • Mức độ hiển thị HDR lý tưởng, theo ý kiến của nhà sáng tạo nội dung.
  • Hiển thị HDR được điều chỉnh

    • Hiển thị HDR cuối cùng được hiển thị trên màn hình, sau khi điều chỉnh hiển thị HDR mục tiêu để tăng cường hiển thị hiện tại.
  • Nhận bản đồ (recovery(x, y) trong phương trình)

    • Một bản đồ cho biết mức độ tăng độ sáng của mỗi pixel, trong phần hiển thị SDR, để tạo màn hình HDR mục tiêu. Sơ đồ này có thể là một kênh hoặc đa kênh. Bản đồ đa kênh biểu thị mức tăng riêng biệt cho từng kênh màu, chẳng hạn như đỏ, xanh lục và xanh dương. Tài liệu này minh hoạ trường hợp liên kết một kênh đơn.
  • clamp(x, a, b)

    • Gắn giá trị x vào khoảng [a, b].
  • exp2(x)

    • luỹ thừa cơ số 2; 2x.
  • floor(x)

    • Trả về số nguyên gần nhất bằng hoặc nhỏ hơn x.
  • log2(x)

    • Lôgarit cơ số 2; log2(x)
  • pow(b, x)

    • Số mũ; bx.
  • XMP

  • Định dạng nhiều hình ảnh

  • Vùng chứa

    • GContainer là phương thức để lưu trữ nhiều hình ảnh trong một vùng chứa hình ảnh, trong đó một hình ảnh được coi là hình ảnh chính. Mọi hình ảnh bổ sung đều được coi là phiên bản thay thế hoặc phụ. Siêu dữ liệu XMP được dùng để truyền đạt sự hiện diện và ý nghĩa của mọi hình ảnh bổ sung. Để biết thêm thông tin, hãy xem mục Thông tin chi tiết về GContainer.

Mã hoá

Phần này mô tả cách mã hoá một tệp JPEG tuân thủ. Tham khảo T.81 (09/92) Nén kỹ thuật số và mã hoá hình ảnh tĩnh tông màu liên tục trong phần Phần phụ thuộc để biết thêm thông tin về định dạng JPEG.

Tạo bản đồ

Các quy trình chụp ảnh camera thường thực hiện một thao tác nén phạm vi để nén dữ liệu về độ chói có dải động cao hơn xuống phạm vi thấp hơn của màn hình SDR thông thường. Bản đồ khuếch đại cung cấp cơ chế lưu trữ dữ liệu đủ để khôi phục dữ liệu ban đầu về độ chói của dải động cao hơn.

Các phép tính sau đây trong phần này giả định số học dấu phẩy động.

Các hàm sau đây mô tả hình ảnh SDR:

  • SDR'(x, y) là hình ảnh chính phi tuyến tính (thường được mã hoá gamma) ba kênh.
  • SDR(x, y) là phiên bản tuyến tính của hình ảnh chính 3 kênh, thu được bằng cách chuyển đổi thành phiên bản tuyến tính của không gian màu hình ảnh chính. Ví dụ: từ một hệ màu có hàm chuyển sRGB sang một hệ màu tuyến tính lưu giữ các dải màu sơ cấp sRGB.

Hàm Ysdr(x, y) được xác định trên khoảng từ 0,0 đến 1,0 và là độ chói tuyến tính của hình ảnh chính ở dải động tiêu chuẩn:

Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))

Hình ảnh HDR có các định nghĩa tương tự.

  • HDR'(x, y) là hình ảnh phi tuyến tính ba kênh, tức là một hình ảnh mã hoá PQ hoặc HLG.
  • HDR(x, y) là hình ảnh HDR tuyến tính ba kênh.

Yhdr(x, y) là độ chói tại một điểm nhất định của hình ảnh HDR:

Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))

Yhdr(x, y) được xác định trong khoảng tăng nội dung từ 0 đến tối đa.

Hình ảnh SDR và HDR phải có cùng độ phân giải. Cấu hình màu của hình ảnh SDR xác định hệ màu của hình ảnh HDR.

Ví dụ: nếu hình ảnh chính SDR có cấu hình màu Display-P3, thì hình ảnh HDR được xác định tương ứng với màu chính của cấu hình đó. Điều này có nghĩa là hình ảnh HDR cũng có dải ô sơ cấp Display-P3.

Sơ đồ khuếch đại được tính toán từ 2 hình ảnh tuyến tính có chứa độ chói của hình ảnh HDR mong muốn là Yhdr(x, y) và hình ảnh có độ chói theo phạm vi chuẩn Ysdr(x, y).

Hàm pixel_gain(x, y) được định nghĩa là tỷ lệ giữa hàm Yhdr(x, y) và hàm Ysdr(x, y):

pixel_gain(x, y) = (Yhdr(x, y) + offset_hdr) / (Ysdr(x, y) + offset_sdr)

Hành vi của hàm pixel_gain(x, y) khi Ysdr(x, y)offset_sdr đều bằng 0 được xác định theo phương thức triển khai.

Ví dụ: quá trình triển khai có thể xử lý trường hợp Ysdr(x, y)offset_sdr đều bằng 0 bằng cách xác định pixel_gain(x, y) là 1.0. Ngoài ra, việc triển khai cũng tránh trường hợp này bằng cách sử dụng offset_sdr khác 0.

Quá trình triển khai có thể chọn các giá trị của offset_sdroffset_hdr.

Bản đồ khuếch đại là một hàm vô hướng mã hoá pixel_gain(x, y) trong không gian lôgarit, so với mức tăng nội dung tối đa và mức tăng nội dung tối thiểu:

map_min_log2 = log2(min_content_boost)
map_max_log2 = log2(max_content_boost)

log_recovery(x, y) = (log2(pixel_gain(x, y)) - map_min_log2)
                   / (map_max_log2 - map_min_log2)
clamped_recovery(x, y) = clamp(log_recovery(x, y), 0.0, 1.0)
recovery(x, y) = pow(clamped_recovery(x, y), map_gamma)

Hành vi của hàm recovery(x, y) khi pixel_gain(x, y) bằng 0 là phương thức triển khai được xác định vì log2(0) là không xác định.

map_gamma là một số thực dấu phẩy động phải lớn hơn 0,0 và được chọn theo phương thức triển khai.

Giá trị tăng nội dung tối đa và tăng nội dung tối thiểu được xác định theo cách triển khai và có thể do nhà sáng tạo nội dung quyết định tuỳ ý. Mức tăng nội dung tối đa phải lớn hơn hoặc bằng 1. Mức tăng nội dung tối thiểu phải nằm trong khoảng (0,0, 1,0].

Các giá trị trong recovery(x, y) được giới hạn trong phạm vi [0,0, 1,0].

Bản đồ khuếch đại được lưu trữ trong ảnh phụ JPEG và do đó phải được mã hoá bằng các giá trị số nguyên 8 bit, chưa ký, nằm trong phạm vi [0, 255]. Mỗi giá trị đại diện cho một giá trị recovery(x, y) và được lưu trữ trong một pixel của hình ảnh phụ.

Đối với bộ nhớ số nguyên 8 bit chưa ký, giá trị đã mã hoá được xác định như sau:

encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)

Quá trình tính toán hàm mã hoá được thực hiện dưới dạng dấu phẩy động và được chuyển đổi ở cuối thành kết quả số nguyên 8 bit không dấu bằng cách làm tròn như được chỉ định.

Phương thức mã hoá này dẫn đến việc biểu diễn số nguyên 8 bit chưa ký của các giá trị recovery(x, y), từ 0,0 đến 1,0. Bản đồ khuếch đại được mã hoá phải được lưu trữ trong mục hình ảnh phụ dưới dạng JPEG. Quá trình triển khai sẽ chọn mức nén cần sử dụng trong quá trình mã hoá JPEG.

Sau khi bản đồ khuếch đại được lưu trữ trong hình ảnh phụ, bản đồ đó sẽ được thêm vào một hình ảnh chính cùng với siêu dữ liệu MPF và GContainer XMP. Thư mục GContainer hình ảnh chính phải chứa một mục cho hình ảnh bản đồ thu thập dữ liệu.

Độ phân giải của bản đồ thu được đã lưu trữ được xác định theo phương thức triển khai và có thể khác với độ phân giải của hình ảnh chính. Trong trường hợp Bản đồ tăng tỷ lệ được điều chỉnh theo tỷ lệ khác với độ phân giải của hình ảnh chính để lưu trữ, phương pháp lấy mẫu phải song tuyến tính hoặc cao hơn và được xác định cách triển khai.

Hướng của bản đồ khuếch đại phải khớp với hướng của hình ảnh chính. Nếu có, mọi siêu dữ liệu về hướng trong hình ảnh bản đồ được lưu trữ sẽ không được sử dụng, như trong EXIF.

Nếu có, hồ sơ màu của bản đồ khuếch đại sẽ không được sử dụng.

Nhận vùng chứa bản đồ

Cấu hình màu

Hồ sơ màu của hình ảnh phải được biểu thị qua Hồ sơ ICC cho hình ảnh chính.

Thuộc tính XMP

Hình ảnh chính chứa siêu dữ liệu XMP để xác định ít nhất 2 hình ảnh có thêm thông tin ngữ nghĩa cho định dạng bản đồ khuếch đại HDR.

Các tiểu mục sau đây có chứa thông tin chi tiết dành riêng cho định dạng này. Thông tin bổ sung về việc tuân thủ chung đối với GContainer được chỉ định trong mục Thông tin chi tiết về GContainer.

Giá trị thuộc tính mô tả trong các bảng sau đây được lưu trữ dưới dạng giá trị đơn giản XMP của các loại giá trị cơ bản XMP được chỉ định.

Giá trị ngữ nghĩa của mục

Thuộc tính Item:Semantic xác định ý nghĩa dành riêng cho ứng dụng của từng mục nội dung đa phương tiện trong thư mục vùng chứa.

Giá trị Nội dung mô tả
Chính Cho biết mục nội dung đa phương tiện là hình ảnh chính, đã sẵn sàng để hiển thị, trong vùng chứa. Thư mục phải chứa một mục "Chính".
GainMap Cho biết mục nội dung đa phương tiện là một bản đồ khuếch đại. Thư mục này có thể chứa tối đa một mục "GainMap".

Siêu dữ liệu bản đồ HDR Gain

Việc thu thập siêu dữ liệu của bản đồ sẽ mã hoá thông tin về cách diễn giải và áp dụng bản đồ khuếch đại để tạo ra bản trình bày HDR của hình ảnh chính.

URI không gian tên XMP cho tiện ích XMP của siêu dữ liệu bản đồ thu được là http://ns.adobe.com/hdr-gain-map/1.0/. Tiền tố không gian tên mặc định là hdrgm.

Siêu dữ liệu này được lưu trữ trong gói XMP của hình ảnh bản đồ thu thập dữ liệu và các thuộc tính sau phải xuất hiện trong rdf:Description của rdf:Description của hình ảnh bản đồ thu được lợi ích:

Tên Loại Nội dung mô tả
hdrgm:Phiên bản Văn bản Phiên bản của định dạng bản đồ đạt được đang sử dụng. Phiên bản này là "1.0". Required.
hdrgm:BaseRenditionIsHDR Boolean Cho biết dải động của hình ảnh chính. "False" cho biết hình ảnh chính là SDR và bản đồ khuếch đại có thể được kết hợp với hình ảnh đó để tạo ra phiên bản HDR. "True" cho biết hình ảnh chính là HDR và bản đồ khuếch đại có thể được kết hợp với hình ảnh đó để tạo ra phiên bản SDR. Phải là "Sai". Không bắt buộc; giá trị mặc định là "False".
hdrgm:GainMapMin Mảng số thực hoặc có thứ tự của số thực Lưu trữ(các) giá trị của map_min_log2. Đây là log2 mức tăng nội dung tối thiểu, là tỷ lệ tối thiểu được phép của độ chói tuyến tính cho chế độ hiển thị HDR mục tiêu so với (chia cho) của hình ảnh SDR tại một pixel nhất định. Có thể là một số thực hoặc một mảng số thực theo thứ tự. Khi một mảng Số thực được sắp xếp theo thứ tự, mảng đó có thể chứa một mục áp dụng cho tất cả các kênh hoặc ba mục tương ứng cho các kênh Đỏ, Xanh lục và Xanh lam. Phải nhỏ hơn hoặc bằng hdrgm:GainMapMax. Không bắt buộc; giá trị mặc định là 0.
hdrgm:GainMapMax Mảng số thực hoặc có thứ tự của số thực Lưu trữ(các) giá trị của map_max_log2. Đây là log2 mức tăng nội dung tối đa. Đây là tỷ lệ độ chói tuyến tính tối đa được phép của chế độ hiển thị HDR mục tiêu so với (chia cho) của hình ảnh SDR tại một pixel nhất định. Có thể là một số thực hoặc một mảng số thực theo thứ tự. Khi một mảng Số thực được sắp xếp theo thứ tự, mảng đó có thể chứa một mục áp dụng cho tất cả các kênh hoặc ba mục tương ứng cho các kênh Đỏ, Xanh lục và Xanh lam. Phải lớn hơn hoặc bằng hdrgm:GainMapMin. Bắt buộc.
hdrgm:Gamma Mảng số thực hoặc có thứ tự của số thực Lưu trữ(các) giá trị của map_gamma. Đây là gamma dùng để áp dụng cho các giá trị bản đồ được lưu trữ. Có thể là một số thực duy nhất hoặc một mảng theo thứ tự của số thực. Khi một mảng Số thực theo thứ tự, mảng đó có thể chứa một mục áp dụng cho tất cả các kênh hoặc ba mục tương ứng cho các kênh Đỏ, Xanh lục và Xanh dương. Phải lớn hơn 0,0. Không bắt buộc; giá trị mặc định là 1.0.
hdrgm:OffsetSDR Mảng số thực hoặc có thứ tự của số thực Lưu trữ(các) giá trị của offset_sdr. Đây là độ lệch áp dụng cho các giá trị pixel SDR trong quá trình tạo bản đồ thu nhận và ứng dụng. Có thể là một số thực hoặc một mảng số thực được sắp xếp theo thứ tự. Khi một mảng Số thực được sắp xếp theo thứ tự, mảng đó có thể chứa một mục áp dụng cho tất cả các kênh hoặc ba mục tương ứng cho các kênh Đỏ, Xanh lục và Xanh dương. Phải từ 0.0 trở lên. Không bắt buộc; giá trị mặc định là 0,015625 (1/64).
hdrgm:OffsetHDR Mảng số thực hoặc có thứ tự của số thực Lưu trữ(các) giá trị của offset_hdr. Đây là độ lệch áp dụng cho các giá trị pixel HDR trong quá trình tạo bản đồ và ứng dụng thu được tín hiệu. Có thể là một số thực hoặc một mảng số thực được sắp xếp theo thứ tự. Khi một mảng Số thực được sắp xếp theo thứ tự, mảng đó có thể chứa một mục áp dụng cho tất cả các kênh hoặc ba mục tương ứng cho các kênh Đỏ, Xanh lục và Xanh dương. Phải từ 0.0 trở lên. Không bắt buộc; giá trị mặc định là 0,015625 (1/64).
hdrgm:HDRCapacityMin Thực Lưu trữ giá trị của hdr_capacity_min. Đây là log2 giá trị tăng cường hiển thị tối thiểu mà bản đồ được áp dụng. Giá trị này cũng ảnh hưởng đến mức áp dụng bản đồ mức tăng dựa trên mức tăng hiển thị. Phải từ 0.0 trở lên. Không bắt buộc; giá trị mặc định là 0.
hdrgm:HDRCapacityMax Thực Lưu trữ giá trị của hdr_capacity_max. Đây là log2 giá trị tăng cường hiển thị tối đa mà bản đồ sẽ được áp dụng hoàn toàn. Giá trị này cũng ảnh hưởng đến mức áp dụng bản đồ mức tăng dựa trên mức tăng hiển thị. Phải lớn hơn hdrgm:HDRCapacityMin. Bắt buộc.

Ví dụ về bản đồ khuếch đại XMP

Ví dụ sau đây về một gói XMP của bản đồ khuếch đại hợp lệ chứa siêu dữ liệu được lấy từ tệp ví dụ minh hoạ trong phần Giới thiệu.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
     xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/"
     hdrgm:Version="1.0"
     hdrgm:GainMapMin="-0.57609993"
     hdrgm:GainMapMax="4.7090998"
     hdrgm:Gamma="1"
     hdrgm:OffsetSDR="0.015625"
     hdrgm:OffsetHDR="0.015625"
     hdrgm:HDRCapacityMin="0"
     hdrgm:HDRCapacityMax="4.7090998"
     hdrgm:BaseRenditionIsHDR="False"/>
  </rdf:RDF>
</x:xmpmeta>

Bộ nhớ MPF của bản đồ khuếch đại

Hình ảnh bản đồ khuếch đại phải được lưu trữ dưới dạng hình ảnh bổ sung như xác định trong Định dạng nhiều hình ảnh CIPA DC-x 007-2009, như được tham chiếu trong phần Phần phụ thuộc.

Giải mã

Phần này mô tả cách giải mã bản đồ khuếch đại từ một tệp JPEG phù hợp.

Tín hiệu của định dạng

Một tệp JPEG tuân theo định dạng này có thể được xác định bằng sự hiện diện của hdrgm:Version="1.0" trong gói XMP của hình ảnh chính, trong đó hdrgm là URI không gian tên http://ns.adobe.com/hdr-gain-map/1.0/.

Xác định vị trí hình ảnh bản đồ khuếch đại

Để biết thông tin chi tiết về cách phân tích cú pháp và giải mã hình ảnh, hãy xem mục Thông tin chi tiết về GContainer sau. Một mục ngữ nghĩa "GainMap" trong rdf:Directory XMP được dùng để báo hiệu vị trí của hình ảnh bản đồ khuếch đại. Ngoài ra, MPF Index IFD và XMP của hình ảnh quét sẽ được dùng để xác định vị trí của bản đồ khuếch đại.

Xử lý siêu dữ liệu không hợp lệ

Siêu dữ liệu bị coi là không hợp lệ nếu không có trường bắt buộc hoặc nếu có trường bất kỳ chứa giá trị không hợp lệ. Một giá trị có thể không hợp lệ vì không thể phân tích cú pháp cho loại đã chỉ định hoặc do giá trị nằm ngoài phạm vi dự kiến.

Nếu gặp phải siêu dữ liệu không hợp lệ, bản đồ khuếch đại sẽ bị bỏ qua và hình ảnh SDR sẽ hiển thị.

Màn hình

Các tệp được mã hoá ở định dạng bản đồ khuếch đại HDR có thể được hiển thị trên màn hình SDR thông thường hoặc trên màn hình HDR có khả năng đầu ra độ chói cao hơn.

Sử dụng bản đồ khuếch đại để tạo chế độ hiển thị HDR được điều chỉnh

Các phép tính sau đây trong phần này giả định giá trị số học dấu phẩy động.

encoded_recovery(x, y) là giá trị số nguyên đơn kênh, 8 bit, chưa ký từ hình ảnh bản đồ độ lợi.

Nếu bản đồ khuếch đại có độ phân giải khác với hình ảnh chính, thì encoded_recovery(x, y) sẽ được xác định bằng một mẫu đã lọc của hình ảnh bản đồ đạt được x và y trong phạm vi chiều rộng và chiều cao của hình ảnh chính, tương ứng. Phương thức lọc phải là song tuyến tính hoặc tốt hơn và phương thức triển khai đã được xác định.

map_gamma được xác định bằng trường siêu dữ liệu hdrgm:Gamma.

log_recovery(x, y) là mức tăng pixel dấu phẩy động chuẩn hoá trong không gian lôgarit:

recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)

Mức tăng hiển thị tối đa là một giá trị dấu phẩy động vô hướng được định nghĩa bằng tỷ lệ giữa điểm trắng HDR hiện tại chia cho điểm trắng SDR hiện tại. Giá trị này do hệ thống hiển thị cung cấp và có thể thay đổi theo thời gian.

hdr_capacity_max được xác định bằng trường siêu dữ liệu hdrgm:HDRCapacityMax. hdr_capacity_min được xác định bằng trường siêu dữ liệu hdrgm:HDRCapacityMin.

weight_factor được xác định như sau khi hdrgm:BaseRenditionIsHDR là "False":

unclamped_weight_factor = (log2(max_display_boost) - hdr_capacity_min)
                        / (hdr_capacity_max - hdr_capacity_min)
weight_factor = clamp(unclamped_weight_factor, 0.0, 1.0)

Khi hdrgm:BaseRenditionIsHDR là "True", phương trình thứ hai sẽ là:

weight_factor = 1.0 - clamp(unclamped_weight_factor, 0.0, 1.0)

gain_map_max được xác định bằng trường siêu dữ liệu hdrgm:GainMapMax. gain_map_min được xác định bằng trường siêu dữ liệu hdrgm:GainMapMin. offset_sdr được xác định bằng trường siêu dữ liệu hdrgm:OffsetSDR. offset_hdr do trường siêu dữ liệu hdrgm:OffsetHDR xác định.

Việc hiển thị HDR được điều chỉnh theo tuyến tính có thể được tính như sau:

log_boost(x, y) = gain_map_min * (1.0f - log_recovery(x, y))
                + gain_map_max * log_recovery(x, y)
HDR(x, y) = (SDR(x, y) + offset_sdr) * exp2(log_boost(x, y) * weight_factor)
          - offset_hdr

Nếu cần, quá trình triển khai có thể áp dụng một phép biến đổi cho HDR(x, y) để đưa dữ liệu vào không gian mà màn hình dự kiến. Bất kỳ phép biến đổi nào như vậy đều phải chính xác về màu sắc.

Thông tin chi tiết về GContainer

Mục này chỉ định các yêu cầu bổ sung sao cho định dạng này phù hợp với siêu dữ liệu XML của GContainer. Siêu dữ liệu được chuyển đổi tuần tự theo Tiêu chuẩn ISO 166841:2011(E) Thông số kỹ thuật XMP Phần 1 và được nhúng bên trong tệp hình ảnh chính như mô tả trong Thông số kỹ thuật của Adobe XMP Phần 3 Lưu trữ trong tệp. Tệp hình ảnh chính chứa các mục sau, có định dạng là RDF/XML.

Yêu cầu về gói XMP

Gói XMP sẽ bao gồm phần mở rộng XMP của siêu dữ liệu bản đồ đạt được thông qua URI không gian tên http://ns.adobe.com/hdr-gain-map/1.0/. Tiền tố không gian tên mặc định là hdrgm.

Gói XMP sẽ xác định hdrgm:Version="1.0".

Phần tử vùng chứa

Không gian tên XMP cho tiện ích XMP của GContainer là http://ns.google.com/photos/1.0/container/. Tiền tố không gian tên mặc định là Container.

Hình ảnh chính chứa một phần tử Container:Directory trong siêu dữ liệu XMP xác định thứ tự và các thuộc tính của tệp nội dung nghe nhìn tiếp theo trong vùng chứa tệp. Mỗi tệp trong vùng chứa có một mục nội dung nghe nhìn tương ứng trong Container:Directory. Mục nội dung đa phương tiện mô tả vị trí trong vùng chứa tệp và các thuộc tính cơ bản của mỗi tệp nối.

Phần tử vùng chứa được mã hoá thành siêu dữ liệu XMP của hình ảnh chính và xác định thư mục của các mục nội dung nghe nhìn trong vùng chứa. Các mục nội dung đa phương tiện phải nằm trong tệp vùng chứa theo cùng thứ tự với các phần tử mục nội dung đa phương tiện trong thư mục và phải được đóng gói chặt chẽ.

Thư mục chỉ có thể chứa một mục hình ảnh "Chính" và phải là mục đầu tiên trong thư mục đó.

Tên phần tử Loại Nội dung mô tả
Vùng chứa:Thư mục Mảng cấu trúc có thứ tự Mảng cấu trúc theo thứ tự, mỗi cấu trúc chứa một cấu trúc Container:Item xác định bố cục và nội dung của vùng chứa.

Phần tử mục

Phần tử mục mô tả cách ứng dụng sử dụng từng mục nội dung đa phương tiện.

URI không gian tên XMP cho tiện ích GContainer Item XMP là http://ns.google.com/photos/1.0/container/item/. Tiền tố không gian tên mặc định là Item.

Mục nội dung đa phương tiện đầu tiên phải là hình ảnh chính.Thuộc tính này phải chỉ định Item:Semantic = "Primary" và một Item:Mime được liệt kê trong Giá trị loại MIME của mục.

Độ dài của mục hình ảnh chính được xác định bằng cách phân tích cú pháp hình ảnh chính dựa trên loại MIME của hình ảnh bắt đầu từ đầu vùng chứa tệp.

Các mục nội dung đa phương tiện có thể chứa thuộc tính Item:Padding chỉ định khoảng đệm bổ sung giữa phần cuối của mục nội dung đa phương tiện và phần đầu của mục nội dung đa phương tiện tiếp theo. Khi xuất hiện trên mục nội dung đa phương tiện cuối cùng trong Container:Directory, Item:Padding biểu thị khoảng đệm giữa cuối mục và cuối tệp.

Mỗi mục nội dung đa phương tiện phải chứa loại Item:Mime và thuộc tính Item:Semantic. Các mục nội dung đa phương tiện của hình ảnh phụ phải chứa thuộc tính Item:Length.

Các mục nội dung nghe nhìn tuần tự có thể chia sẻ dữ liệu tài nguyên trong vùng chứa tệp. Mục nội dung nghe nhìn đầu tiên xác định vị trí của tài nguyên trong vùng chứa tệp và các mục nội dung nghe nhìn được chia sẻ tiếp theo có Item:Length được đặt thành 0. Trong trường hợp dữ liệu tài nguyên chính là một vùng chứa, Item:URI có thể được dùng để xác định vị trí của dữ liệu mục nội dung đa phương tiện trong tài nguyên.

Vị trí của tài nguyên mục nội dung đa phương tiện trong vùng chứa được xác định bằng cách tổng thời lượng của phương thức mã hoá hình ảnh chính, giá trị Item:Length của tài nguyên mục nội dung đa phương tiện phụ trước và tất cả giá trị Item:Padding trước đó. Item:Padding được coi là 0 đối với các tài nguyên của mục nội dung đa phương tiện không chỉ định giá trị.

Tên thuộc tính Loại Nội dung mô tả
Mặt hàng:Mime Văn bản Chuỗi đơn giản cho biết loại MIME của mục nội dung đa phương tiện trong vùng chứa. Để biết định nghĩa, hãy xem phần Giá trị loại MIME mục. Required.
Mục:Ngữ nghĩa Văn bản Chuỗi đơn giản cho biết ý nghĩa cụ thể trong ứng dụng của mục nội dung đa phương tiện. Để biết định nghĩa, hãy xem phần Giá trị ngữ nghĩa của mục. Required.
Mục:Độ dài Số nguyên Chuỗi đơn giản chứa độ dài số nguyên dương tính bằng byte của mục. Độ dài 0 cho biết tài nguyên mục nội dung đa phương tiện được chia sẻ với mục nội dung đa phương tiện trước đó. Bắt buộc đối với các mục nội dung nghe nhìn phụ. Không bắt buộc đối với mục nội dung nghe nhìn hình ảnh chính.
Mục:Nhãn Văn bản Chuỗi do hoạt động triển khai xác định được dùng để phân biệt nhiều phần tử mục bằng cùng một Item:Semantic. Không bắt buộc.
Mục:Khoảng đệm Số nguyên Một chuỗi chứa độ dài số nguyên dương tính bằng byte của khoảng đệm bổ sung giữa điểm cuối mục nội dung đa phương tiện và đầu mục nội dung đa phương tiện tiếp theo hoặc phần cuối tệp khi được dùng trên mục nội dung đa phương tiện cuối cùng trong Container:Directory. Giá trị được giả định là 0 khi không có giá trị này. Không bắt buộc.
Mục:URI Văn bản Một chuỗi URI tuân theo ISO/IEC 14496-12 mục 8.11.9, chứa URI tương đối của dữ liệu nội dung đa phương tiện bên trong tài nguyên mục nội dung đa phương tiện. Giá trị mặc định là tài nguyên hình ảnh chính. Không bắt buộc đối với loại MIME định dạng tệp đa phương tiện cơ sở ISO ISO/IEC 14496-12. Không được dùng cho mục đích khác.

Giá trị loại MIME mục

Thuộc tính Item:Mime xác định loại MIME của từng dữ liệu mục nội dung đa phương tiện.

Giá trị Nội dung mô tả
hình ảnh/jpeg Hình ảnh JPEG.

Ví dụ về GContainer XMP

Ví dụ sau về một gói GContainer XMP hợp lệ có siêu dữ liệu được lấy từ tệp ví dụ minh hoạ trong phần Giới thiệu.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.2">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description
     xmlns:Container="http://ns.google.com/photos/1.0/container/"
     xmlns:Item="http://ns.google.com/photos/1.0/container/item/"
     xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/"
     hdrgm:Version="1.0">
      <Container:Directory>
        <rdf:Seq>
          <rdf:li rdf:parseType="Resource">
            <Container:Item
             Item:Semantic="Primary"
             Item:Mime="image/jpeg"/>
          </rdf:li>
          <rdf:li rdf:parseType="Resource">
            <Container:Item
             Item:Semantic="GainMap"
             Item:Mime="image/jpeg"
             Item:Length="66171"/>
          </rdf:li>
        </rdf:Seq>
      </Container:Directory>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>