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:
Encoding
- Pembuatan peta keuntungan
- Mendapatkan kompresi peta
- Mendapatkan pembuatan penampung peta
Dekode
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:
- Spesifikasi Adobe XMP Bagian 3: Penyimpanan dalam File
- ISO 16684-1:2019 XMP Specification Part 1
- Format file media dasar ISO ISO/IEC 14496-12
- T.81 (09/92) Kompresi dan coding digital gambar diam kontinu
- Info Produk/Layanan Format Multi-Gambar CIPA DC-x 007-2009
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
- Platform Metadata yang Dapat Diperluas. Standar yang menentukan metode untuk mengenkode metadata ke dalam penampung gambar; ditentukan oleh Spesifikasi XMP ISO 16684-1:2011(E) Bagian 1.
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.
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.
- Tambahkan bagian Kompatibilitas ISO 21496-1.
v1.0
Publikasi spesifikasi Ultra HDR awal.