Format Gambar Ultra HDR v1.0

Pengantar

Dokumen ini mendefinisikan perilaku format file baru yang mengenkode rentang logaritmik mendapatkan gambar peta dalam file gambar JPEG. Pembaca lama yang tidak mendukung format baru, baca dan tampilkan model standar rentang gambar dari file gambar.Pembaca yang mendukung format ini menggabungkan gambar utama dengan peta get dan merender gambar rentang dinamis tinggi pada layar yang kompatibel.

Bagian selanjutnya dari dokumen ini menjelaskan metode-metode proses yang diperlukan untuk memanfaatkan format ini. Pada tingkat tinggi, siklus proses gambar sesuai menjadi 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 offset terkait
informasi

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

Motivasi

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

Agar hal ini dapat dilakukan, format file harus:

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

Selain itu, teknik tampilan harus:

  • Tidak memerlukan pemrosesan yang berat untuk mendekode.
  • Mampu beradaptasi dengan rasio apa pun antara titik putih HDR dan SDR layar, yang dapat sangat bervariasi di antara perangkat, atau bahkan secara temporer pada satu perangkat seluler.

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

  • Memangkas sorotan.
  • Menghancurkan bayangan.
  • Mengubah atau mengompresi kontras lokal.
  • Mengubah hubungan tonal relatif (antara objek dalam scene).

Dependensi

Berikut ini adalah referensi normatif untuk spesifikasi ini:

Definisi

  • Layar SDR

    • Layar konvensional yang tidak dirancang untuk menampilkan konten HDR. Ini layar 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 lebih besar daripada Layar SDR, biasanya 800 cd/m2 atau lebih besar, dan biasanya juga memiliki kontras yang lebih baik yang berbeda daripada tampilan SDR.
  • Gambar utama

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

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

    • Dalam fotografi, pemandangan dunia nyata sering kali memiliki jangkauan yang lebih dinamis daripada yang dapat diwakili oleh layar SDR. Operasi seperti Kompresi rentang, juga yang disebut pemetaan nada lokal, diperlukan untuk mengurangi rentang dinamis gambar. Pengurangan ini perlu menghindari klip sorotan atau peningkatan bayangan, sambil menjaga kontras lokal sebanyak mungkin.Anda mencoba untuk mengurangi ukuran tepi luminans yang besar pada gambar, yang berkontribusi lebih ke kontras globalnya, sambil mencoba mempertahankan ukuran tepi luminans kecil, yang merupakan detailnya.Meskipun ada banyak implementasi yang berbeda, operasi seperti itu adalah standar di sebagian besar kamera digital saat ini.
  • Titik putih SDR

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

    • Luminans linier maksimum konten HDR pada layar pada pada 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 adalah konstanta untuk gambar tertentu. Misalnya, jika bernilai empat, maka untuk setiap piksel yang diberikan, luminans linear rendisi HDR yang ditampilkan harus maksimum 4x luminans linear yaitu rendisi SDR. Dalam praktiknya, ini berarti bahwa bagian yang lebih terang dari pemandangan 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)

    • Dengan nilai ini, kreator konten dapat membatasi seberapa gelap yang dapat diambil gambarnya, saat ditampilkan pada layar HDR, relatif terhadap SDR dan berperforma tinggi.Nilai ini adalah konstanta untuk gambar tertentu.
    • Jika, misalnya, nilainya adalah 0,5, maka untuk setiap piksel yang diberikan, luminans rendisi HDR yang ditampilkan harus (minimal) 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)

    • Boost maksimum yang tersedia yang didukung oleh layar, pada titik tertentu dalam baik. Nilai ini dapat berubah dari waktu ke waktu berdasarkan setelan perangkat dan seperti kondisi cahaya sekitar, atau jumlah piksel terang yang di layar.
    • Misalnya, jika nilai ini 4,0, maka layar mampu menampilkan piksel yang paling terang empat kali lebih terang dari SDR titik putih. Nilai ini selalu >= 1,0, karena tampilan selalu bisa menampilkan HDR putih setidaknya seterang SDR putih.
  • Peningkatan layar

    • Sama dengan peningkatan konten maksimum dan peningkatan tampilan maksimal. Ini nilainya selalu >= 1,0.
    • Misalnya, jika peningkatan konten maksimum adalah 4,0 dan peningkatan tampilan maksimum adalah 3,0, maka peningkatan tampilan adalah 3.0. Piksel ditampilkan hingga 3x lebih terang daripada SDR, karena kemampuan tampilan adalah faktor pembatas.
    • Contoh lain, jika peningkatan konten maksimum adalah 4.0 dan peningkatan tampilan maksimum adalah 5.0, maka peningkatan tampilan adalah 4,0. Piksel ditampilkan hingga 4x lebih terang dari SDR, karena maksud konten adalah faktor pembatas.
  • Rendisi HDR target

    • Modifikasi HDR yang ideal, menurut kreator konten.
  • Rendisi HDR yang diadaptasi

    • Rendisi 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 tingkat kecerahan setiap piksel yang akan dicerahkan, dalam rendisi SDR, untuk menghasilkan rendisi HDR target. Peta ini dapat berupa saluran tunggal atau multisaluran. Peta multi-saluran menunjukkan keuntungan terpisah untuk masing-masing saluran warna, seperti merah, hijau, dan biru. Dokumen ini menggambarkan untuk 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)

    • Eksponensiasi; bx.
  • XMP

  • Format Multi-Gambar

    • {i>Multi-Picture Format<i} adalah teknik yang dikembangkan oleh Kamera dan {i>Image<i} Products Association (CIPA) untuk menyimpan beberapa gambar berenkode JPEG di dalam satu file JPEG.
    • Untuk informasi selengkapnya, lihat dependensi terkait, Laporan Resmi CIPA Format Multi-Picture DC-x 007-2009.
  • Kontainer

    • GContainer adalah metode untuk menyimpan beberapa gambar dalam satu image penampung, di mana satu gambar dianggap sebagai gambar utama. Apa saja gambar tambahan dianggap sebagai versi alternatif atau tambahan. {i>Metadata<i} XMP digunakan untuk mengomunikasikan keberadaan dan makna setiap gambar tambahan. Untuk informasi selengkapnya, lihat GContainer detail.

Mengenkode

Bagian ini menjelaskan cara mengenkode file JPEG yang sesuai. Lihat T.81 (09/92) Kompresi digital dan pengkodean nada diam image, di bagian Dependencies, untuk mengetahui informasi lebih lanjut tentang format JPEG.

Mendapatkan pembuatan peta

Pipeline pencitraan kamera umumnya melakukan operasi kompresi rentang untuk mengompresi data luminans rentang dinamis yang lebih tinggi ke rentang konvensional yang lebih rendah SDR akan ditampilkan. {i>Get map <i}menyediakan mekanisme untuk menyimpan data yang cukup untuk memulihkan data luminans rentang dinamis yang lebih tinggi dan asli.

Penghitungan berikut di bagian ini mengasumsikan aritmetika floating point.

Fungsi berikut menjelaskan image SDR:

  • SDR'(x, y) adalah tiga saluran, non-linear (biasanya berenkode gamma) image utama.
  • SDR(x, y) adalah versi linear dari gambar utama tiga saluran, diperoleh dengan mengubah ke versi linear warna primer spasi. 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 mirip juga ada untuk gambar HDR.

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

Yhdr(x, y) adalah luminans pada titik tertentu 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 SDR menentukan ruang warna gambar HDR.

Misalnya, jika gambar utama SDR memiliki profil warna Display-P3, maka gambar HDR ditentukan relatif terhadap warna primer profil tersebut. Ini berarti gambar HDR juga memiliki warna primer Display-P3.

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

Fungsi pixel_gain(x, y) ditentukan sebagai rasio antara 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 kedua angka nol adalah yang didefinisikan 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. Sebagai alternatif, implementasi juga menghindari skenario ini dengan menggunakan offset_sdr bukan nol.

Implementasi dapat 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 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) adalah nol adalah implementasi yang ditentukan, karena log2(0) tidak ditentukan.

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

Nilai peningkatan konten maksimum dan peningkatan konten minimum adalah ditentukan oleh penerapan, dan dapat diputuskan secara sewenang-wenang oleh pembuat konten. Peningkatan konten maksimum harus lebih besar dari atau sama dengan 1.0. Peningkatan konten minimum harus dalam rentang (0,0, 1,0].

Nilai di recovery(x, y) dibatasi hingga rentang [0.0, 1.0].

Peta keuntungan disimpan dalam JPEG gambar sekunder, dan oleh karena itu harus dienkode menggunakan 8-bit, nilai bilangan bulat tanpa label, sehingga dalam kisaran [0, 255]. Setiap nilai mewakili nilai recovery(x, y) dan disimpan dalam satu piksel sekunder gambar.

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

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

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

Pengkodean ini menghasilkan representasi bilangan bulat tanpa tanda tangan 8-bit dari Nilai recovery(x, y), dari 0.0 hingga 1.0. GET map yang dikodekan harus disimpan di dalam item gambar sekunder sebagai JPEG. Implementasi memilih jumlah kompresi yang akan digunakan selama encoding JPEG.

Setelah peta amplifikasi disimpan di gambar sekunder, peta tersebut ditambahkan ke gambar utama image dengan metadata MPF dan GContainer XMP. GContainer image utama harus berisi item untuk gambar peta yang diperoleh.

Resolusi peta keuntungan yang disimpan ditentukan oleh implementasi dan bisa berbeda dari resolusi gambar utama. Jika Perolehan Peta diskalakan ke resolusi yang berbeda dari gambar utama untuk penyimpanan, metode sampling harus bilinear atau lebih baik, dan implementasinya telah ditentukan.

Orientasi peta perolehan harus sesuai dengan gambar utama. Jika ada, metadata orientasi apa pun dalam gambar peta {i>mendapatkan<i} yang disimpan, seperti di EXIF, tidak digunakan.

Jika ada, profil warna peta GET tidak akan digunakan.

Dapatkan penampung peta

Warna profil

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

Atribut XMP

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

Subbagian berikut berisi detail khusus untuk format ini. Tambahan informasi mengenai kesesuaian umum dengan GContainer yang disebutkan dalam Bagian Detail GContainer.

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

Nilai semantik item

Properti Item:Semantic menentukan arti spesifik per aplikasi setiap item media di direktori container.

Nilai Deskripsi
Primer Menunjukkan bahwa item media adalah gambar utama, siap untuk ditampilkan, ke container yang sama. Direktori tersebut harus berisi satu "Primary" yang bermanfaat.
{i>GetMap<i} Menunjukkan bahwa item media adalah peta keuntungan. Direktori tersebut mungkin berisi maksimal satu "GainMap" yang bermanfaat.

Mendapatkan metadata peta HDR

Mendapatkan metadata peta yang mengenkode informasi tentang cara menafsirkan dan menerapkan penguatan peta untuk menghasilkan representasi HDR dari gambar utama.

URI namespace XMP untuk ekstensi XMP metadata peta 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 harus muncul di rdf:Description gambar peta perbesar:

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. "Salah" menunjukkan utama adalah SDR dan peta {i>Get<i} dapat digabungkan dengannya untuk menghasilkan Rendisi HDR. "Benar" menunjukkan bahwa gambar utama adalah HDR dan peta amplifikasi mungkin dikombinasikan dengannya untuk menghasilkan rendisi SDR. Harus "False". Opsional; nilai defaultnya adalah "False".
hdrgm:GainMapMin Array Real atau terurut Menyimpan nilai map_min_log2. Ini adalah Peningkatan konten minimal log2, yaitu rasio minimum yang diizinkan luminans linear untuk rendisi HDR target relatif terhadap (dibagi dengan) gambar SDR, pada piksel tertentu. Mungkin satu Real, atau {i>array<i} Real yang diurutkan. Ketika array Real diurutkan, dapat berisi satu yang berlaku untuk semua saluran atau tiga item untuk warna Merah, Hijau, dan Saluran biru. Harus lebih kecil atau sama dengan hdrgm:GainMapMax. Opsional; nilai defaultnya adalah 0.0.
hdrgm:GainMapMax Array Real atau terurut Menyimpan nilai map_max_log2. Ini adalah Peningkatan konten maksimum sebesar log2, yaitu rasio maksimum yang diizinkan luminans linear untuk rendisi HDR Target relatif terhadap (dibagi dengan) gambar SDR, pada piksel tertentu. Mungkin satu Real, atau {i>array<i} Real yang diurutkan. Ketika array Real diurutkan, dapat berisi satu yang berlaku untuk semua saluran atau tiga item untuk warna Merah, Hijau, dan Saluran biru. Harus lebih besar dari atau sama dengan hdrgm:GainMapMin. Wajib.
hdrgm:Gamma Array Real atau terurut Menyimpan nilai map_gamma. Ini adalah gamma untuk berlaku untuk nilai peta yang tersimpan. Dapat berupa Real tunggal, atau array yang diurutkan Sungguh nyata. Ketika array Real yang diurutkan, mungkin berisi satu item yang berlaku ke semua saluran atau tiga item untuk saluran Merah, Hijau, dan Biru secara berurutan. Harus lebih besar dari 0.0. Opsional; nilai defaultnya adalah 1.0.
hdrgm:OffsetSDR Array Real atau terurut Menyimpan nilai offset_sdr. Ini adalah offset untuk berlaku untuk nilai piksel SDR selama pembuatan dan penerapan peta. Dapat berupa Real tunggal, atau array Real yang diurutkan. Ketika array yang diurutkan dari Sebenarnya, data ini dapat berisi satu item yang berlaku untuk semua channel atau tiga item untuk saluran Merah, Hijau, dan Biru. Harus 0.0 atau lebih besar. Opsional; nilai defaultnya adalah 0,015625 (1/64).
hdrgm:OffsetHDR Array Real atau terurut Menyimpan nilai offset_hdr. Ini adalah offset untuk berlaku untuk nilai piksel HDR selama pembuatan dan penerapan peta. Dapat berupa Real tunggal, atau array Real yang diurutkan. Ketika array yang diurutkan dari Sebenarnya, data ini dapat berisi satu item yang berlaku untuk semua channel 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 Riil Menyimpan nilai hdr_capacity_min. Ini adalah log2 dari nilai peningkatan tampilan minimum tempat peta tidak diterapkan sama sekali. Nilai ini juga memengaruhi seberapa besar penerapan peta amplifikasi berdasarkan pada layar penguat. Harus 0.0 atau lebih besar. Opsional; bawaan nilainya adalah 0,0.
hdrgm:HDRCapacityMax Riil Menyimpan nilai hdr_capacity_max. Ini adalah log2 dari nilai peningkatan tampilan maksimum untuk peta yang diterapkan sepenuhnya. Nilai ini juga memengaruhi seberapa banyak yang akan diterapkan peta amplifikasi berdasarkan peningkatan tampilan. Harus lebih besar dari hdrgm:HDRCapacityMin. Wajib.

Contoh mendapatkan peta XMP

Contoh paket XMP peta amplifikasi yang valid berikut berisi metadata yang diambil dari contoh file 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 yang diperoleh

Gambar peta perolehan harus disimpan sebagai gambar tambahan seperti yang ditetapkan dalam CIPA Format Multi-Gambar DC-x 007-2009, seperti yang dirujuk dalam Bagian Dependencies.

Dekode

Bagian ini menjelaskan cara mendekode peta keuntungan 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 gambar, lihat GContainer berikut detail. "GainMap" item semantik dalam XMP rdf:Directory digunakan untuk menandakan lokasi dari gambar peta yang didapat. Atau, IFD Indeks MPF dan pemindaian gambar' XMP digunakan untuk menentukan lokasi peta yang diperkuat.

Menangani metadata yang tidak valid

Metadata dianggap tidak valid jika kolom yang wajib diisi tidak ada, atau jika ada ada bidang 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 ditemukan metadata yang tidak valid, peta penguatan harus diabaikan dan SDR gambar yang akan ditampilkan.

Tampilan

File yang dienkode dalam format peta penguatan HDR mungkin dirender pada layar SDR konvensional, atau pada layar HDR yang memiliki luminans lebih tinggi {i>output<i} tersebut.

Gunakan peta amplifikasi untuk membuat rendisi HDR yang diadaptasi

Penghitungan berikut di bagian ini mengasumsikan aritmetika floating point.

encoded_recovery(x, y) adalah nilai bilangan bulat saluran tunggal, 8-bit, tanpa label dari gambar peta GET.

Jika peta yang didapat memiliki resolusi yang berbeda dari gambar utama, maka Sebaliknya, encoded_recovery(x, y) ditentukan oleh pengambilan sampel yang difilter dari mendapatkan gambar peta untuk x dan y pada rentang lebar dan tinggi gambar utama, secara berurutan. Metode penyaringan harus bilinear atau lebih baik dan implementasi yang ditentukan.

map_gamma ditentukan oleh kolom metadata hdrgm:Gamma.

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

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 didefinisikan sebagai rasio antara titik putih HDR saat ini dan dibagi dengan titik putih SDR saat ini. Ini 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 "Salah":

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 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. Transformasi tersebut harus benar secara kolorimetrik.

Detail GContainer

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

Persyaratan paket XMP

Paket XMP harus mencakup ekstensi XMP metadata peta amplifikasi melalui URI namespace http://ns.adobe.com/hdr-gain-map/1.0/. Namespace default 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 menentukan urutan dan properti file media berikutnya di dalam file tersebut container. Setiap file dalam penampung memiliki item media yang sesuai di Container:Directory. Item media menjelaskan lokasi dalam file {i>container <i}dan properti dasar setiap file yang digabungkan.

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

Direktori hanya dapat berisi satu "Primary" item gambar dan itu harus menjadi item pertama item pada direktori.

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

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

Panjang item gambar utama ditentukan dengan mengurai elemen gambar utama berdasarkan jenis MIME-nya, yang dimulai dari awal container file.

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

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 sumber daya dalam penampung file. Tujuan pertama menentukan lokasi sumber daya di kontainer file, dan item media bersama berikutnya memiliki Item:Length yang disetel ke 0. Jika data resource itu sendiri adalah container, Item:URI dapat digunakan untuk menentukan lokasi data item media dalam resource.

Lokasi resource item media dalam container ditentukan dengan menjumlahkan panjang encoding gambar utama, yaitu nilai Item:Length resource item media sekunder sebelumnya, dan semua Item:Padding sebelumnya masing-masing. 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 metode container. Untuk mengetahui definisinya, lihat bagian nilai jenis MIME Item. Wajib.
Item:Semantik Teks String sederhana yang menunjukkan arti media yang spesifik untuk aplikasi yang bermanfaat. Untuk definisi, 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 resource sebelumnya item media. Wajib untuk item media sekunder. Opsional untuk utama item media gambar.
Item:Label Teks String yang ditentukan implementasi yang digunakan untuk membedakan beberapa item elemen dengan Item:Semantic yang sama. Opsional.
Item:Padding Bilangan Bulat String yang berisi panjang bilangan bulat positif dalam byte tambahan padding di antara akhir item media dan awal item media item media, 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, yang berisi URI relatif dari data media di dalam sumber daya item media. Defaultnya adalah resource gambar utama. Opsional untuk jenis MIME format file media dasar ISO/IEC 14496-12. Tidak dapat digunakan di tempat lain.

Nilai jenis MIME item

Atribut Item:Mime menentukan jenis MIME setiap item media layanan otomatis dan data skalabel.

Nilai Deskripsi
gambar/jpeg Gambar JPEG.

Contoh GContainer XMP

Contoh paket XMP GContainer yang valid berikut memiliki metadata yang diambil dari contoh file 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>