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:
Encoding
- Mendapatkan pembuatan peta
- Mendapatkan kompresi peta
- Mendapatkan pembuatan penampung peta
Dekode
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:
- Spesifikasi Adobe XMP Bagian 3: Penyimpanan dalam File
- Spesifikasi XMP ISO 16684-1:2019 Bagian 1
- Format file media dasar ISO/IEC 14496-12 ISO
- T.81 (09/92) Kompresi digital dan coding untuk gambar diam continuous
- Laporan Resmi Format Multi-Picture CIPA DC-x 007-2009
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
- Platform Metadata yang Dapat Diperluas. Standar yang menentukan metode untuk mengenkode metadata ke dalam penampung gambar; ditentukan oleh ISO 16684-1:2011(E) XMP Specification Part 1.
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>