Format Gambar Ultra HDR v1.1

Pengantar

Dokumen ini menentukan perilaku format file baru yang mengenkode gambar peta penguatan rentang logaritmik 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 gain dan merender gambar rentang dinamis tinggi di layar yang kompatibel.

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

  1. Encoding

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


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

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

Motivasi

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

Agar praktis, format file harus:

  • Kompatibel dengan versi lama, sehingga gambar SDR konvensional akan ditampilkan kepada pengguna naif.
  • Tidak memerlukan terlalu banyak ruang tambahan.

Selain itu, teknik tampilan harus:

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

Terakhir, teknik ini harus dapat melakukan semua tindakan sebelumnya tanpa pernah:

  • Memotong sorotan.
  • Bayangan yang hancur.
  • Mengubah atau mengompresi kontras lokal.
  • Mengubah hubungan tonal relatif (antara objek dalam tampilan).

Dependensi

Berikut adalah referensi normatif untuk spesifikasi ini:

Definisi

  • Layar SDR

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

    • Layar yang dirancang 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 ditambahkan ke dalamnya. Gambar utama berisi metadata XMP GContainer 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, pemandangan dunia nyata sering kali memiliki rentang yang lebih dinamis daripada yang dapat diwakili oleh layar SDR. Operasi seperti Kompresi rentang, yang juga disebut pemetaan tone lokal, diperlukan untuk mengurangi rentang dinamis gambar. Pengurangan ini harus menghindari pemotongan sorotan atau bayangan yang hancur, sekaligus mempertahankan kontras lokal sebanyak mungkin. Anda mencoba mengurangi ukuran tepi luminans besar dalam gambar, yang berkontribusi lebih besar pada kontras globalnya, sekaligus mencoba mempertahankan ukuran tepi luminans kecil, yang merupakan detail.Meskipun ada banyak implementasi yang berbeda, operasi seperti itu merupakan standar pada 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 pada layar pada waktu tertentu. Nilai ini biasanya lebih tinggi dari titik putih SDR.
  • Penguatan

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

    • Nilai ini memungkinkan kreator konten membatasi seberapa terang gambar dapat ditampilkan, saat ditampilkan di layar HDR, relatif terhadap rendering SDR.
    • Nilai ini adalah konstanta untuk gambar tertentu. Misalnya, jika nilainya empat, maka untuk piksel tertentu, luminans linear dari rendering HDR yang ditampilkan harus, paling banyak, 4x luminans linear dari rendering SDR. Dalam praktiknya, ini berarti bagian yang lebih terang dari tampilan dapat ditampilkan hingga 4x lebih terang.
    • Dalam praktiknya, nilai ini biasanya lebih besar dari 1,0.
    • Selalu lebih besar dari atau sama dengan Peningkatan konten min.
  • Peningkatan konten minimum (min_content_boost dalam persamaan)

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

    • Penguatan maksimum yang tersedia dan didukung oleh layar, pada titik waktu tertentu. Nilai ini dapat berubah dari waktu ke 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 dapat menampilkan piksel yang paling terang empat kali lipat dari titik putih SDR. Nilai ini selalu >= 1,0, karena layar selalu dapat menampilkan HDR putih minimal seterang SDR putih.
  • Penguatan tampilan

    • Sama dengan yang lebih kecil 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 adalah faktor pembatas.
    • Sebagai contoh lain, jika peningkatan konten maksimum adalah 4,0 dan peningkatan tampilan maksimum adalah 5,0, peningkatan tampilan adalah 4,0. Piksel ditampilkan 4x lebih terang daripada SDR karena intent konten adalah faktor pembatas.
  • Target rendering HDR

    • Reka ulang HDR yang ideal, menurut kreator konten.
  • Render HDR yang diadaptasi

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

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

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

    • Eksponensial 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)

    • Eksponensiasi; bx.
  • XMP

  • Format Multi-Gambar

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

    • 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 menyampaikan keberadaan dan arti gambar tambahan. Untuk mengetahui informasi selengkapnya, lihat bagian Detail GContainer.

Encode

Bagian ini menjelaskan cara mengenkode file JPEG yang sesuai. Lihat T.81 (09/92) Digital compression and coding of continuous-tone still images, di bagian Dependensi, untuk mengetahui informasi selengkapnya tentang format JPEG.

Pembuatan peta keuntungan

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 keuntungan menyediakan mekanisme untuk menyimpan data yang cukup untuk memulihkan data luminans rentang dinamis yang lebih tinggi yang asli.

Perhitungan berikut di bagian ini mengasumsikan aritmetika floating point.

Fungsi berikut menjelaskan gambar SDR:

  • SDR'(x, y) adalah gambar utama tiga saluran, non-linear (biasanya dienkode gamma).
  • SDR(x, y) adalah versi linear dari gambar utama tiga saluran, diperoleh dengan mentransformasi ke versi linear ruang warna gambar utama. Misalnya, dari ruang warna dengan fungsi transfer sRGB ke ruang warna linear yang mempertahankan primer warna 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 serupa ada untuk gambar HDR.

  • HDR'(x, y) adalah non-linear tiga saluran, yaitu gambar yang dienkode 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 relatif terhadap warna utama profil tersebut. Artinya, gambar HDR juga memiliki primer Display-P3.

Peta gain 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 nol ditentukan oleh implementasi.

Misalnya, implementasi dapat menangani kasus saat Ysdr(x, y) dan offset_sdr sama-sama nol dengan menentukan pixel_gain(x, y) sebagai 1,0. Atau, implementasi juga menghindari skenario ini dengan menggunakan offset_sdr bukan nol.

Implementasi mungkin memilih nilai offset_sdr dan offset_hdr.

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

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) nol ditentukan oleh penerapan, 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 sewenang-wenang oleh kreator konten. Peningkatan konten maksimum harus lebih besar dari atau sama dengan 1.0. Peningkatan konten minimum harus berada dalam rentang (0,0, 1,0].

Nilai dalam recovery(x, y) dibatasi pada rentang [0,0, 1,0].

Peta gain disimpan dalam JPEG gambar sekunder, sehingga harus dienkode menggunakan nilai bilangan bulat 8-bit tanpa tanda tangan, sehingga dalam rentang [0, 255]. Setiap nilai mewakili nilai recovery(x, y) dan disimpan dalam satu piksel gambar sekunder.

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

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

Penghitungan fungsi encoding dilakukan dalam floating point dan dikonversi di akhir ke hasil bilangan bulat tanpa tanda tangan 8-bit dengan pembulatan 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 keuntungan yang dienkode harus disimpan dalam item gambar sekunder sebagai JPEG. Implementasi memilih jumlah kompresi yang akan digunakan selama encoding JPEG.

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

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

Orientasi peta gain harus cocok dengan orientasi gambar utama. Jika ada, metadata orientasi apa pun dalam gambar peta gain yang disimpan, seperti dalam EXIF, tidak akan digunakan.

Jika ada, profil warna peta penguatan tidak akan 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 minimal dua gambar dengan informasi semantik tambahan untuk format peta gain HDR.

Subbagian berikut berisi detail khusus untuk format ini. Informasi tambahan mengenai 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 makna khusus aplikasi dari setiap item media dalam direktori penampung.

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

Mendapatkan metadata peta HDR

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

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

Metadata ini disimpan dalam paket XMP untuk gambar peta GET, dan properti berikut harus muncul di rdf:Description XMP untuk gambar peta get:

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

Contoh XMP peta penguatan

Contoh paket XMP peta penguatan 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 peta penguatan

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

Dekode

Bagian ini menjelaskan cara mendekode peta gain 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 adalah URI namespace http://ns.adobe.com/hdr-gain-map/1.0/.

Menemukan gambar peta peningkatan

Untuk mengetahui detail tentang penguraian dan dekode image, lihat bagian detail GContainer berikut. Item semantik "GainMap" dalam rdf:Directory XMP digunakan untuk menandakan lokasi dari gambar peta yang diperoleh. Atau, IFD Indeks MPF dan XMP gambar pemindaian digunakan untuk menentukan lokasi peta gain.

Menangani metadata yang tidak valid

Metadata dianggap tidak valid jika kolom yang diperlukan tidak ada, atau jika ada kolom yang berisi 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 gain harus diabaikan dan gambar SDR harus ditampilkan.

Tampilan

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

Gunakan peta gain untuk membuat rendering HDR yang diadaptasi 

Perhitungan berikut di bagian ini mengasumsikan aritmetika floating point.

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

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

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)

Peningkatan tampilan maksimum adalah nilai floating point skalar yang ditentukan sebagai rasio antara titik putih HDR saat ini dan dibagi dengan 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 adalah "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 bernilai "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 diadaptasikan 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 mungkin menerapkan transformasi ke HDR(x, y), untuk menempatkan data di ruang yang diharapkan oleh tampilan. Setiap transformasi tersebut harus kolorimetrisk benar.

Detail GContainer

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

Persyaratan paket XMP

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

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

Elemen container

Namespace XMP untuk ekstensi XMP GContainer 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 di Container:Directory. Item media menjelaskan lokasi dalam penampung file dan properti dasar setiap file yang digabungkan.

Elemen penampung dienkode ke dalam metadata XMP gambar utama dan menentukan direktori item media dalam penampung. Item media harus berada dalam file penampung dalam urutan yang sama dengan elemen item media di direktori dan harus dikemas dengan rapat.

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

Nama elemen Jenis Deskripsi
Penampung:Direktori Array Struktur yang Diurutkan Array struct yang diurutkan, masing-masing berisi struct Container:Item yang menentukan tata letak dan konten penampung.

Elemen item

Elemen item menjelaskan cara 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.  Nilai ini harus menentukan Item:Semantic = "Primary" dan Item:Mime yang tercantum dalam Nilai jenis MIME item.

Durasi item gambar utama ditentukan dengan mengurai gambar utama berdasarkan jenis MIME-nya mulai 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 di item media terakhir di Container:Directory, Item:Padding menunjukkan padding antara akhir item dan akhir file.

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

Item media berurutan dapat berbagi data resource dalam penampung file. Item media pertama menentukan lokasi resource dalam penampung file, dan item media bersama berikutnya memiliki Item:Length yang ditetapkan ke 0. Jika data resource itu sendiri adalah 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 dalam 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:Length 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 di 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, yang berisi URI relatif 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. Jika tidak, tidak dapat digunakan.

Nilai jenis MIME item

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

Nilai Deskripsi
image/jpeg Gambar JPEG.

Contoh XMP GContainer

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>

Kompatibilitas ISO 21496-1

ISO 21496-1 menyediakan mekanisme enkapsulasi alternatif untuk mengenkode metadata peta perolehan dalam file gambar. Anda dapat mengenkode metadata Ultra HDR dan metadata ISO 21496-1 dalam satu file JPEG menggunakan satu gambar gainmap dalam file.

Metadata ISO 21496-1 muncul tepat setelah segmen XMP APP1 di
kedua gambar JPEG

Gambar 2. Contoh tata letak file dengan metadata Ultra HDR dan ISO 21496-1.

Untuk kompatibilitas lintas platform maksimum, implementasi dan aplikasi Android yang mengimplementasikan encoding atau decoding file JPEG mereka sendiri dengan peta gain harus mendukung encoding dan decoding untuk metadata Ultra HDR v1 dan ISO 21496-1. Selama operasi encoding, implementasi atau aplikasi harus mengenkode kedua format metadata. Jika kedua jenis metadata ada selama operasi dekode, implementasi atau aplikasi harus memilih untuk menggunakan metadata ISO 21496-1.

Perubahan Log

Bagian ini berisi informasi tentang perubahan antarversi spesifikasi ini.

v1.1

Semua perubahan dalam spesifikasi Ultra HDR versi ini bersifat informatif dan tentang kompatibilitas ISO 21496-1. Tidak ada perubahan pada format file sebenarnya.

v1.0

Publikasi spesifikasi Ultra HDR awal.