Format Gambar Ultra HDR v1.0

Pengantar

Dokumen ini menentukan perilaku format file baru yang mengenkode gambar peta perolehan rentang logaritmik ke dalam file gambar JPEG. Pembaca lama yang tidak mendukung format baru akan membaca dan menampilkan gambar rentang dinamis rendah konvensional dari file gambar.Pembaca yang mendukung format ini menggabungkan gambar utama dengan peta perolehan dan merender gambar rentang dinamis tinggi di layar yang kompatibel.

Bagian selanjutnya dari dokumen ini menjelaskan metode proses yang diperlukan untuk memanfaatkan format ini. Pada tingkat tinggi, siklus proses gambar yang sesuai dengan format ini adalah:

  1. Encoding

    1. Mendapatkan pembuatan peta
    2. Mendapatkan kompresi peta
    3. Mendapatkan pembuatan penampung peta
  2. Dekode


Contoh
Tata letak file format gambar Ultra HDR, dengan metadata dan informasi
offset terkait

Gambar 1. Contoh tata letak file dan metadata yang relevan.

Motivasi

Tujuan format file ini adalah mengenkode informasi tambahan dalam file gambar SDR yang dapat digunakan bersama teknik tampilan untuk menghasilkan rendisi HDR yang optimal dalam satu file.

Agar praktis, format {i>file<i} harus:

  • Kompatibel dengan versi lama, sehingga pada penonton yang naif, gambar SDR konvensional akan ditampilkan.
  • Tidak memakan terlalu banyak ruang ekstra.

Selain itu, teknik tampilan harus:

  • Tidak memerlukan pemrosesan berat untuk mendekode.
  • Dapat beradaptasi dengan rasio apa pun antara titik putih HDR dan SDR pada layar, yang dapat sangat bervariasi antarperangkat, atau bahkan untuk sementara pada satu perangkat.

Dan terakhir, teknik tersebut harus dapat melakukan semua tindakan sebelumnya tanpa pernah:

  • Kliping Sorotan.
  • Menghancurkan bayangan.
  • Mengubah atau mengompresi kontras lokal.
  • Mengubah hubungan tonal relatif (antar-objek dalam scene).

Dependensi

Berikut adalah referensi normatif untuk spesifikasi ini:

Definisi

  • Layar SDR

    • Layar konvensional, yang tidak dirancang untuk menampilkan konten HDR. Layar ini biasanya menghasilkan kecerahan puncak nominal sekitar 400 cd/m2 atau kurang.
  • Layar HDR

    • Layar yang didesain untuk konten HDR. Layar ini biasanya menghasilkan kecerahan puncak nominal yang lebih besar daripada Layar SDR, biasanya 800 cd/m2 atau lebih besar, dan biasanya juga memiliki rasio kontras yang lebih baik daripada layar SDR.
  • Gambar utama

    • Instance pertama gambar dalam file GContainer dengan file media sekunder yang ditambahkan ke dalamnya. Gambar utama berisi metadata GContainer XMP yang menentukan urutan dan properti file item media sekunder berikutnya dalam penampung file.
  • Gambar sekunder

    • File item media berikutnya yang ditambahkan ke gambar utama dalam file GContainer.
  • Kompresi rentang

    • Dalam fotografi, adegan dunia nyata sering kali memiliki rentang yang lebih dinamis daripada yang dapat diwakili oleh layar SDR. Operasi seperti kompresi Rentang, juga disebut pemetaan nuansa lokal, diperlukan untuk mengurangi rentang dinamis gambar. Pengurangan ini perlu menghindari pemotongan sorotan atau penghancuran bayangan, sambil mempertahankan kontras lokal sebanyak mungkin.Anda mencoba mengurangi ukuran tepi luminans besar pada gambar, yang berkontribusi lebih besar terhadap kontras globalnya, sekaligus mencoba mempertahankan ukuran tepi luminans yang kecil, yang merupakan detailnya.Meskipun ada banyak implementasi yang berbeda, operasi seperti itu merupakan standar di sebagian besar kamera digital modern saat ini.
  • Titik putih SDR

    • Luminans linear maksimum konten SDR di layar pada titik waktu tertentu.
  • Titik putih HDR

    • Luminans linear maksimum konten HDR di layar pada titik waktu tertentu. Nilai ini biasanya lebih tinggi daripada titik putih SDR.
  • Penguatan

    • Titik putih HDR dibagi titik putih SDR.
  • Peningkatan konten maksimum (max_content_boost dalam persamaan)

    • Dengan nilai ini, kreator konten dapat membatasi tingkat kecerahan gambar, saat ditampilkan pada layar HDR, relatif terhadap rendisi SDR.
    • Nilai ini konstan untuk gambar tertentu. Misalnya, jika nilainya empat, maka untuk piksel tertentu, luminans linear dari rendisi HDR yang ditampilkan harus, maksimal, 4x luminans linear dari rendisi SDR. Dalam praktiknya, hal ini berarti bagian yang lebih terang dari adegan dapat ditampilkan hingga 4x lebih cerah.
    • Dalam praktiknya, nilai ini biasanya lebih besar dari 1,0.
    • Selalu lebih besar dari atau sama dengan Peningkatan konten min.
  • Peningkatan konten min (min_content_boost dalam persamaan)

    • Nilai ini memungkinkan kreator konten membatasi seberapa gelap gambar, saat ditampilkan pada layar HDR, relatif terhadap rendisi SDR.Nilai ini konstan untuk gambar tertentu.
    • Misalnya, jika nilainya adalah 0,5, maka untuk setiap piksel tertentu, luminans linear dari rendisi HDR yang ditampilkan harus (setidaknya) 0,5x luminans linear dari penampilan SDR.
    • Dalam praktiknya, nilai ini biasanya sama dengan atau hanya kurang dari 1,0.
    • Selalu kurang dari atau sama dengan Peningkatan konten maksimum.
  • Boost tampilan maksimum (max_display_boost dalam persamaan)

    • Boost maksimum yang tersedia yang didukung oleh layar, pada titik waktu tertentu. Nilai ini dapat berubah seiring waktu berdasarkan setelan perangkat dan faktor lainnya, seperti kondisi cahaya sekitar, atau jumlah piksel terang di layar.
    • Misalnya, jika nilai ini adalah 4,0, layar akan mampu menampilkan piksel yang empat kali lebih terang daripada titik putih SDR. Nilai ini selalu >= 1, 0 karena layar selalu dapat menampilkan HDR putih setidaknya seterang putih SDR.
  • Penguat sinyal

    • Sama dengan lebih rendah dari peningkatan konten maksimum dan peningkatan tampilan maksimum. Nilai ini selalu >= 1,0.
    • Misalnya, jika peningkatan konten maksimum adalah 4,0 dan peningkatan tampilan maksimum adalah 3,0, peningkatan tampilan adalah 3,0. Piksel ditampilkan 3x lebih terang daripada SDR, karena kemampuan tampilan merupakan faktor pembatas.
    • Untuk contoh lainnya, jika peningkatan konten maksimum adalah 4.0 dan peningkatan tampilan maksimum adalah 5.0, maka peningkatan tampilan adalah 4.0. Piksel ditampilkan 4x lebih terang daripada SDR, karena intent konten merupakan faktor pembatas.
  • Target versi HDR

    • Tampilan HDR yang ideal, menurut kreator konten.
  • Versi HDR yang diadaptasi

    • Tampilan HDR akhir yang ditampilkan di layar, setelah menyesuaikan rendisi HDR Target untuk peningkatan tampilan saat ini.
  • Dapatkan peta (recovery(x, y) dalam persamaan)

    • Peta yang menunjukkan seberapa banyak kecerahan setiap piksel, dalam rendisi SDR, untuk menghasilkan rendisi HDR target. Peta ini dapat berupa satu saluran atau multisaluran. Peta multisaluran menunjukkan perolehan terpisah untuk setiap saluran warna, seperti merah, hijau, dan biru. Dokumen ini mengilustrasikan kasus peta saluran tunggal.
  • clamp(x, a, b)

    • Tempelkan nilai x ke rentang [a, b].
  • exp2(x)

    • Eksponensiasi basis 2; 2x.
  • floor(x)

    • Menampilkan bilangan bulat terdekat yang sama dengan atau kurang dari x.
  • log2(x)

    • Logaritma basis 2; log2(x)
  • pow(b, x)

    • Eksponensi; bx.
  • XMP

  • Format Multi-Foto

    • Format Multi-Picture adalah teknik yang dikembangkan oleh Camera and Imaging Products Association (CIPA) untuk menyimpan beberapa gambar yang dienkode JPEG dalam satu file JPEG.
    • Untuk mengetahui informasi selengkapnya, lihat dependensi terkait, White Paper of CIPA Format Multi-Picture DC-x 007-2009.
  • Penampung G

    • GContainer adalah metode untuk menyimpan beberapa gambar dalam satu penampung gambar, dengan satu gambar dianggap sebagai gambar utama. Setiap gambar tambahan dianggap sebagai versi alternatif atau tambahan. Metadata XMP digunakan untuk mengomunikasikan kehadiran dan makna gambar tambahan apa pun. Untuk mengetahui informasi selengkapnya, lihat bagian detail GContainer.

Mengenkode

Bagian ini menjelaskan cara mengenkode file JPEG yang sesuai. Lihat T.81 (09/92) Kompresi digital dan coding gambar diam continuous, di bagian Dependensi, untuk mengetahui informasi selengkapnya tentang format JPEG.

Mendapatkan pembuatan peta

Pipeline pencitraan kamera biasanya melakukan operasi kompresi rentang untuk mengompresi data luminans rentang dinamis yang lebih tinggi ke rentang yang lebih rendah dari layar SDR konvensional. Peta penguatan menyediakan mekanisme untuk menyimpan data yang memadai guna memulihkan data luminans rentang dinamis yang lebih tinggi dan asli.

Penghitungan di bagian ini mengasumsikan aritmetika floating point.

Fungsi-fungsi berikut menjelaskan image SDR:

  • SDR'(x, y) adalah gambar primer tiga saluran non-linear (biasanya dienkode gamma).
  • SDR(x, y) adalah versi linear dari gambar utama tiga saluran, yang diperoleh dengan mentransformasi ruang warna gambar utama ke versi linear. Misalnya, dari ruang warna dengan fungsi transfer sRGB ke ruang warna linear yang mempertahankan warna primer sRGB.

Fungsi Ysdr(x, y) ditentukan pada rentang 0,0 hingga 1,0 dan merupakan luminans linear gambar utama rentang dinamis standar:

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

Definisi yang serupa ada untuk gambar HDR.

  • HDR'(x, y) adalah gambar non-linear tiga saluran, yaitu gambar berenkode PQ atau HLG.
  • HDR(x, y) adalah gambar HDR linear tiga saluran.

Yhdr(x, y) adalah luminans pada titik tertentu dari gambar HDR:

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

Yhdr(x, y) ditentukan dalam rentang 0,0 hingga peningkatan konten maksimum.

Gambar SDR dan HDR harus memiliki resolusi yang sama. Profil warna gambar SDR menentukan ruang warna gambar HDR.

Misalnya, jika gambar utama SDR memiliki profil warna Display-P3, gambar HDR akan ditentukan sesuai dengan warna primer profil tersebut. Artinya, gambar HDR juga memiliki warna primer Display-P3.

Peta perolehan dihitung dari dua gambar linear yang berisi luminans gambar HDR yang diinginkan, Yhdr(x, y), dan gambar luminans rentang standar, Ysdr(x, y).

Fungsi pixel_gain(x, y) ditentukan sebagai rasio antara fungsi Yhdr(x, y) dan fungsi Ysdr(x, y):

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

Perilaku fungsi pixel_gain(x, y), dengan Ysdr(x, y) dan offset_sdr bernilai nol, ditentukan oleh implementasi.

Misalnya, implementasi dapat menangani kasus saat Ysdr(x, y) dan offset_sdr adalah nol dengan menentukan pixel_gain(x, y) sebagai 1.0. Atau, implementasi juga menghindari skenario ini dengan menggunakan offset_sdr yang bukan nol.

Implementasi dapat memilih nilai offset_sdr dan offset_hdr.

Peta perolehan adalah fungsi skalar yang mengenkode pixel_gain(x, y) dalam ruang logaritmik, relatif terhadap peningkatan konten maksimum dan peningkatan konten minimum:

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)

Perilaku fungsi recovery(x, y) dengan pixel_gain(x, y) bernilai nol, ditentukan oleh implementasi karena log2(0) tidak ditentukan.

map_gamma adalah bilangan floating point yang harus lebih besar dari 0,0 dan dipilih oleh implementasi.

Nilai peningkatan konten maksimum dan peningkatan konten minimum ditentukan oleh penerapan, dan dapat ditentukan secara arbitrer oleh pembuat konten. Peningkatan konten maksimum harus lebih besar dari atau sama dengan 1,0. Peningkatan konten min harus dalam rentang (0,0, 1,0].

Nilai dalam recovery(x, y) dibatasi pada rentang [0.0, 1.0].

Peta penguatan disimpan dalam JPEG gambar sekunder, sehingga harus dienkode menggunakan nilai integer 8-bit yang tidak ditandatangani, sehingga berada dalam rentang [0, 255]. Setiap nilai mewakili nilai recovery(x, y) dan disimpan dalam satu piksel gambar sekunder.

Untuk penyimpanan bilangan bulat 8 bit tanpa tanda tangan, nilai yang dienkode ditentukan sebagai berikut:

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

Perhitungan fungsi encoding dilakukan dalam floating point dan dikonversi di akhir menjadi hasil bilangan bulat tanpa tanda tangan 8-bit dengan membulatkan seperti yang ditunjukkan.

Encoding ini menghasilkan representasi bilangan bulat tanpa tanda tangan 8-bit dari nilai recovery(x, y), dari 0,0 hingga 1,0. Peta perolehan yang dienkode harus disimpan dalam item gambar sekunder sebagai JPEG. Implementasi memilih jumlah kompresi yang akan digunakan selama encoding JPEG.

Setelah disimpan dalam gambar sekunder, peta perolehan akan ditambahkan ke gambar utama dengan metadata MPF dan GContainer XMP. Direktori GContainer gambar utama harus berisi item untuk gambar peta perolehan.

Resolusi peta perolehan yang disimpan telah ditentukan oleh implementasi dan dapat berbeda dengan resolusi dari gambar utama. Jika Peta Keuntungan diskalakan ke resolusi yang berbeda dari gambar utama untuk penyimpanan, metode pengambilan sampel harus bilinear atau lebih baik, dan implementasinya ditentukan.

Orientasi peta perolehan harus sesuai dengan gambar utama. Jika ada, metadata orientasi dalam gambar peta perolehan yang disimpan, seperti EXIF, tidak digunakan.

Jika ada, profil warna peta perolehan tidak digunakan.

Mendapatkan penampung peta

Profil warna

Profil warna gambar harus ditunjukkan melalui Profil ICC untuk gambar utama.

Atribut XMP

Gambar utama berisi metadata XMP untuk menentukan setidaknya dua gambar dengan informasi semantik tambahan untuk format peta perolehan HDR.

Subbagian berikut berisi detail khusus untuk format ini. Informasi tambahan terkait kesesuaian umum dengan GContainer ditentukan di bagian Detail GContainer.

Nilai atribut yang dijelaskan dalam tabel berikut disimpan sebagai nilai sederhana XMP dari jenis nilai dasar XMP yang ditentukan.

Nilai semantik item

Properti Item:Semantic menentukan arti khusus aplikasi dari setiap item media dalam direktori container.

Nilai Deskripsi
Primer Menunjukkan bahwa item media adalah gambar utama, siap ditampilkan, dalam container. Direktori harus berisi satu item "Primary".
{i>GetMap<i} Menunjukkan bahwa item media adalah peta perolehan. Direktori ini mungkin berisi maksimal satu item "GainMap".

Metadata peta HDR Gain

Metadata peta Gain mengenkode informasi tentang cara menafsirkan dan menerapkan peta dapatkan untuk menghasilkan representasi HDR dari gambar utama.

URI namespace XMP untuk ekstensi XMP metadata peta perolehan adalah http://ns.adobe.com/hdr-gain-map/1.0/. Awalan namespace default adalah hdrgm.

Metadata ini disimpan dalam paket XMP gambar peta perolehan dan properti berikut harus muncul dalam rdf:Description XMP gambar peta perolehan:

Nama Jenis Deskripsi
hdrgm:Versi Teks Versi format peta perolehan yang digunakan. Versi ini adalah "1.0". Wajib.
hdrgm:BaseRenditionIsHDR Boolean Menunjukkan rentang dinamis gambar utama. "False" menunjukkan gambar utama adalah SDR dan peta perolehan dapat digabungkan dengannya untuk menghasilkan rendisi HDR. "True" menunjukkan gambar utama adalah HDR dan peta perolehan dapat digabungkan dengannya untuk menghasilkan rendisi SDR. Harus "Salah". Opsional; nilai defaultnya adalah "False".
hdrgm:GainMapMin Larik Real atau himpunan Real Menyimpan nilai map_min_log2. Ini adalah log2 peningkatan konten minimum, yang merupakan rasio minimum luminans linear yang diizinkan untuk rendisi HDR target, yang relatif terhadap (dibagi ) gambar SDR, pada piksel tertentu. Dapat berupa Real tunggal, atau array Real yang diurutkan. Ketika array Real yang diurutkan, dapat berisi satu item yang berlaku untuk semua saluran atau tiga item untuk masing-masing saluran Merah, Hijau, dan Biru. Harus lebih kecil dari atau sama dengan hdrgm:GainMapMax. Opsional; nilai defaultnya adalah 0.0.
hdrgm:PerolehanMapMax Larik Real atau himpunan Real Menyimpan nilai map_max_log2. Ini adalah log2 peningkatan konten maksimum, yang merupakan rasio maksimum luminans linear yang diizinkan untuk rendisi HDR Target, dibandingkan dengan (dibagi dengan) gambar SDR, pada piksel tertentu. Dapat berupa Real tunggal, atau array Real yang diurutkan. Ketika array Real yang diurutkan, dapat berisi satu item yang berlaku untuk semua saluran atau tiga item untuk masing-masing saluran Merah, Hijau, dan Biru. Harus lebih besar dari atau sama dengan hdrgm:GainMapMin. Wajib.
hdrgm:Gamma Larik Real atau himpunan Real Menyimpan nilai map_gamma. Ini adalah gamma yang akan diterapkan pada nilai peta yang tersimpan. Dapat berupa Real tunggal, atau array Real-Time yang diurutkan. Ketika array Real yang diurutkan, dapat berisi satu item yang berlaku untuk semua saluran atau tiga item untuk masing-masing saluran Merah, Hijau, dan Biru. Harus lebih besar dari 0,0. Opsional; nilai defaultnya adalah 1,0.
hdrgm:OffsetSDR Larik Real atau himpunan Real Menyimpan nilai offset_sdr. Ini adalah offset yang akan diterapkan pada nilai piksel SDR selama pembuatan dan penerapan peta perolehan. Dapat berupa satu Real, atau serangkaian Real yang diurutkan. Jika array Real yang diurutkan, array tersebut dapat berisi satu item yang berlaku untuk semua saluran atau tiga item untuk masing-masing saluran Merah, Hijau, dan Biru. Harus 0,0 atau lebih besar. Opsional; nilai default-nya adalah 0,015625 (1/64).
hdrgm:OffsetHDR Larik Real atau himpunan Real Menyimpan nilai offset_hdr. Ini adalah offset untuk diterapkan pada nilai piksel HDR selama pembuatan peta dan penerapan perolehan. Dapat berupa satu Real, atau serangkaian Real yang diurutkan. Jika array Real yang diurutkan, array tersebut dapat berisi satu item yang berlaku untuk semua saluran atau tiga item untuk masing-masing saluran Merah, Hijau, dan Biru. Harus 0,0 atau lebih besar. Opsional; nilai default-nya adalah 0,015625 (1/64).
hdrgm:HDRCapacityMin Riil Menyimpan nilai hdr_capacity_min. Ini adalah log2 dari nilai peningkatan tampilan minimum saat peta diterapkan. Nilai ini juga memengaruhi seberapa banyak peta penguatan yang akan diterapkan berdasarkan peningkatan tampilan. Harus 0,0 atau lebih besar. Opsional; nilai default-nya adalah 0,0.
hdrgm:HDRCapacityMax Riil Menyimpan nilai hdr_capacity_max. Ini adalah log2 dari nilai peningkatan tampilan maksimum yang petanya diterapkan sepenuhnya. Nilai ini juga memengaruhi seberapa banyak peta penguatan yang akan diterapkan berdasarkan peningkatan tampilan. Harus lebih besar dari hdrgm:HDRCapacityMin. Wajib.

Contoh XMP peta perolehan

Contoh paket XMP peta perolehan yang valid berikut berisi metadata yang diambil dari file contoh yang diilustrasikan di bagian Pengantar.

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

Penyimpanan MPF untuk peta penguatan

Gambar peta perolehan harus disimpan sebagai gambar tambahan seperti yang ditentukan dalam Format Multi-Picture CIPA DC-x 007-2009, sebagaimana dirujuk di bagian Dependencies.

Dekode

Bagian ini menjelaskan cara mendekode peta penguatan dari file JPEG yang sesuai.

Sinyal format

File JPEG yang sesuai dengan format ini dapat diidentifikasi dengan adanya hdrgm:Version="1.0" dalam paket XMP gambar utama, dengan hdrgm sebagai URI namespace http://ns.adobe.com/hdr-gain-map/1.0/.

Temukan gambar peta perolehan

Untuk mengetahui detail tentang penguraian dan decoding image, lihat bagian detail GContainer berikut. Item semantik "GainMap" dalam rdf:Directory XMP digunakan untuk memberi sinyal lokasi gambar peta perolehan. Atau, IFD Index MPF dan XMP gambar pemindaian digunakan untuk menentukan lokasi peta perolehan.

Menangani metadata yang tidak valid

Metadata dianggap tidak valid jika kolom yang diperlukan tidak ada, atau jika ada kolom dengan nilai yang tidak valid. Nilai mungkin tidak valid karena tidak dapat diurai ke jenis yang ditentukan atau karena berada di luar rentang yang diharapkan.

Jika metadata yang tidak valid ditemukan, peta perolehan harus diabaikan dan gambar SDR harus ditampilkan.

Layar

File yang dienkode dalam format peta perolehan HDR dapat dirender pada layar SDR konvensional, atau pada layar HDR yang mampu menghasilkan output dengan luminans lebih tinggi.

Menggunakan peta perolehan untuk membuat versi HDR yang diadaptasi

Penghitungan berikut di bagian ini mengasumsikan aritmetika floating point.

encoded_recovery(x, y) adalah nilai bilangan bulat satu saluran, 8-bit, dan tanpa tanda tangan dari gambar peta perolehan.

Jika peta perolehan memiliki resolusi yang berbeda dengan gambar utama, encoded_recovery(x, y) akan ditentukan oleh pengambilan sampel gambar peta perolehan yang difilter untuk x dan y pada rentang lebar dan tinggi gambar utama. Metode pemfilteran harus bilinear atau lebih baik dan ditentukan implementasi.

map_gamma ditentukan oleh kolom metadata hdrgm:Gamma.

log_recovery(x, y) adalah perolehan piksel floating point yang dinormalisasi dalam ruang logaritmik:

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

Boost tampilan maksimum adalah nilai floating point skalar yang didefinisikan sebagai rasio antara titik putih HDR saat ini dan dibagi titik putih SDR saat ini. Nilai ini disediakan oleh sistem tampilan dan dapat berubah dari waktu ke waktu.

hdr_capacity_max ditentukan oleh kolom metadata hdrgm:HDRCapacityMax. hdr_capacity_min ditentukan oleh kolom metadata hdrgm:HDRCapacityMin.

weight_factor ditentukan sebagai berikut jika hdrgm:BaseRenditionIsHDR bernilai "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)

Jika hdrgm:BaseRenditionIsHDR adalah "Benar", persamaan kedua adalah:

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

gain_map_max ditentukan oleh kolom metadata hdrgm:GainMapMax. gain_map_min ditentukan oleh kolom metadata hdrgm:GainMapMin. offset_sdr ditentukan oleh kolom metadata hdrgm:OffsetSDR. offset_hdr ditentukan oleh kolom metadata hdrgm:OffsetHDR.

Rendisi HDR yang diadaptasi linear dapat dikomputasi sebagai berikut:

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

Jika diperlukan, implementasi dapat menerapkan transformasi ke HDR(x, y) untuk menempatkan data di ruang yang diharapkan oleh tampilan. Setiap transformasi tersebut harus benar secara warnaimetris.

Detail GContainer

Bagian ini menetapkan persyaratan tambahan sedemikian rupa sehingga format ini sesuai dengan metadata XML GContainer. Metadata ini diserialisasi sesuai dengan Spesifikasi XMP ISO 166841:2011(E) Bagian 1 dan disematkan di dalam file gambar utama seperti yang dijelaskan dalam Penyimpanan Spesifikasi Adobe XMP Bagian 3 dalam File. File gambar utama berisi item berikut, yang diformat sebagai RDF/XML.

Persyaratan paket XMP

Paket XMP harus menyertakan ekstensi XMP metadata peta perolehan melalui URI namespace http://ns.adobe.com/hdr-gain-map/1.0/. Awalan namespace default adalah hdrgm.

Paket XMP harus menentukan hdrgm:Version="1.0".

Elemen container

Namespace XMP untuk ekstensi GContainer XMP adalah http://ns.google.com/photos/1.0/container/. Awalan namespace default adalah Container.

Gambar utama berisi elemen Container:Directory dalam metadata XMP yang menentukan urutan dan properti file media berikutnya dalam penampung file. Setiap file dalam penampung memiliki item media yang sesuai dalam Container:Directory. Item media menjelaskan lokasi dalam penampung file dan properti dasar setiap file sambungan.

Elemen penampung dienkode ke metadata XMP image utama dan menentukan direktori item media dalam container. Item media harus ditempatkan dalam file penampung dalam urutan yang sama seperti elemen item media dalam direktori dan harus dikemas rapat.

Direktori ini hanya dapat berisi satu item gambar "Primary" dan harus menjadi item pertama dalam direktori.

Nama elemen Jenis Deskripsi
Penampung:Direktori Array Struktur Berurutan Array struct berurutan yang masing-masing berisi struct Container:Item yang menentukan tata letak dan konten container.

Elemen item

Elemen item menjelaskan bagaimana setiap item media digunakan oleh aplikasi.

URI namespace XMP untuk ekstensi XMP Item GContainer adalah http://ns.google.com/photos/1.0/container/item/. Awalan namespace default adalah Item.

Item media pertama harus berupa gambar utama.Ini harus menentukan Item:Semantic = "Primary" dan Item:Mime yang tercantum dalam nilai jenis MIME Item.

Panjang item gambar utama ditentukan dengan mengurai gambar utama berdasarkan jenis MIME yang dimulai dari awal penampung file.

Item media dapat berisi atribut Item:Padding yang menentukan padding tambahan antara akhir item media dan awal item media berikutnya. Jika ada pada item media terakhir dalam Container:Directory, Item:Padding menunjukkan padding antara akhir item dan akhir file.

Setiap item media harus berisi jenis Item:Mime dan atribut Item:Semantic. Item media gambar sekunder harus berisi atribut Item:Length.

Item media berurutan dapat berbagi data resource dalam container file. Item media pertama menentukan lokasi resource dalam penampung file, dan item media yang dibagikan berikutnya memiliki Item:Length yang ditetapkan ke 0. Jika data resource itu sendiri merupakan penampung, Item:URI dapat digunakan untuk menentukan lokasi data item media dalam resource.

Lokasi resource item media dalam penampung ditentukan dengan menjumlahkan panjang encoding gambar utama, nilai Item:Length dari resource item media sekunder sebelumnya, dan semua nilai Item:Padding sebelumnya. Item:Padding dianggap 0 pada resource item media yang tidak menentukan nilainya.

Nama atribut Jenis Deskripsi
Item:Mime Teks String sederhana yang menunjukkan jenis MIME item media di penampung. Untuk mengetahui definisinya, lihat bagian nilai jenis MIME Item. Wajib.
Item:Semantik Teks String sederhana yang menunjukkan arti khusus aplikasi dari item media. Untuk mengetahui definisinya, lihat bagian Nilai semantik item. Wajib.
Item:Panjang Bilangan Bulat String sederhana yang berisi panjang bilangan bulat positif dalam byte item. Panjang 0 menunjukkan bahwa resource item media dibagikan dengan item media sebelumnya. Wajib untuk item media sekunder. Opsional untuk item media gambar utama.
Item:Label Teks String yang ditentukan implementasi yang digunakan untuk membedakan beberapa elemen item dengan Item:Semantic yang sama. Opsional.
Item:Padding Bilangan Bulat String yang berisi panjang bilangan bulat positif dalam byte padding tambahan antara akhir item media dan awal item media berikutnya, atau akhir file saat digunakan pada item media terakhir dalam Container:Directory. Nilai 0 diasumsikan jika tidak ada. Opsional.
Item:URI Teks String URI yang sesuai dengan ISO/IEC 14496-12 bagian 8.11.9, berisi URI relatif dari data media di dalam resource item media. Defaultnya adalah resource gambar utama. Opsional untuk jenis MIME format file media dasar ISO ISO/IEC 14496-12. Tidak dapat digunakan sebaliknya.

Nilai jenis MIME item

Atribut Item:Mime menentukan jenis MIME setiap data item media.

Nilai Deskripsi
gambar/jpeg Gambar JPEG.

Contoh GContainer XMP

Contoh paket XMP GContainer yang valid berikut memiliki metadata yang diambil dari file contoh yang diilustrasikan di bagian Pengantar.

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