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