Introduzione
Questo documento definisce il comportamento di un nuovo formato file che codifica un'immagine della mappa di guadagno dell'intervallo logaritmico in un file immagine JPEG. I lettori precedenti che non supportano il nuovo formato leggono e mostrano l'immagine convenzionale con bassa gamma dinamica dal file immagine. I lettori che supportano il formato combinano l'immagine principale con la mappa di guadagno e visualizzano un'immagine ad alta gamma dinamica su display compatibili.
La parte restante di questo documento descrive i metodi delle procedure necessarie per utilizzare questo formato. A livello generale, il ciclo di vita di un'immagine conforme a questo formato è:
Codifica
- Generazione di mappe con guadagno
- Ottenere una compressione delle mappe
- Generazione di contenitori mappa
Decodifica
Motivazione
Lo scopo di questo formato file è codificare informazioni aggiuntive nei file di immagini SDR che possono essere utilizzate in combinazione con la tecnica di visualizzazione per produrre le loro rappresentazioni HDR ottimali in un unico file.
Affinché ciò sia pratico, il formato file deve:
- Essere compatibile con le versioni precedenti, in modo che gli spettatori meno esperti visualizzino l'immagine SDR convenzionale.
- Non occupare troppo spazio aggiuntivo.
Inoltre, la tecnica di visualizzazione deve:
- Non richiedono un'elaborazione intensiva per la decodifica.
- Essere in grado di adattarsi a qualsiasi rapporto tra i punti di bianco HDR e SDR di un display, che può variare notevolmente da un dispositivo all'altro o anche temporalmente su un singolo dispositivo.
Infine, la tecnica deve essere in grado di eseguire tutte le azioni precedenti senza mai:
- Clip dei momenti salienti.
- Ombre schiacciate.
- Modifica o compressione del contrasto locale.
- Modifica delle relazioni tonali relative (tra gli oggetti nella scena).
Dipendenze
Di seguito sono riportati i riferimenti normativi per questa specifica:
- Adobe XMP Specification Part 3: Storage in Files
- ISO 16684-1:2019 XMP Specification Part 1
- Formato file multimediale base ISO/IEC 14496-12
- T.81 (09/92) Compressione e codifica digitale di immagini statiche a tono continuo
- White paper sul formato multifoto CIPA DC-x 007-2009
Definizioni
Display SDR
- Un display convenzionale, non progettato per la visualizzazione di contenuti HDR. Questi display in genere producono una luminosità di picco nominale di circa 400 cd/m2 o meno.
Display HDR
- Un display progettato per i contenuti HDR. Questi display in genere producono una luminosità di picco nominale superiore a quella di un display SDR, in genere 800 cd/m2 o superiore, e in genere hanno anche rapporti di contrasto migliori rispetto ai display SDR.
Immagine principale
- La prima istanza di un'immagine in un file GContainer con file multimediali secondari aggiunti. L'immagine principale contiene i metadati XMP GContainer che definiscono l'ordine e le proprietà dei file di elementi multimediali secondari successivi nel contenitore file.
Immagine secondaria
- File di elementi multimediali successivi che vengono aggiunti all'immagine principale in un file GContainer.
Compressione dell'intervallo
- In fotografia, le scene del mondo reale spesso hanno una gamma più dinamica di quanto non possa rappresentare un display SDR. Operazioni come la compressione dell'intervallo, chiamata anche mappatura tonale locale, sono necessarie per ridurre la gamma dinamica di un'immagine. Questa riduzione deve evitare di tagliare le alte luci o schiacciare le ombre, preservando al contempo il più possibile il contrasto locale. Cerchi di ridurre le dimensioni dei bordi di illuminazione più grandi nell'immagine, che contribuiscono maggiormente al suo contrasto globale, cercando al contempo di preservare le dimensioni dei bordi di illuminazione più piccoli, ovvero i dettagli.Sebbene ci siano molte implementazioni diverse, oggi tale operazione è standard sulla maggior parte delle moderne fotocamere digitali.
Punto di bianco SDR
- La luminanza lineare massima dei contenuti SDR su un display in un determinato momento.
Punto di bianco HDR
- La luminanza lineare massima dei contenuti HDR su un display in un determinato momento. Questo valore è in genere superiore al punto di bianco SDR.
Migliora
- Il punto di bianco HDR diviso per il punto di bianco SDR.
Incremento massimo dei contenuti (
max_content_boost
nelle equazioni)- Questo valore consente al creator di contenuti di limitare la luminosità di un'immagine, quando viene mostrata su un display HDR, rispetto alla resa in SDR.
- Questo valore è una costante per una determinata immagine. Ad esempio, se il valore è quattro, per un determinato pixel la luminanza lineare della rappresentazione HDR visualizzata deve essere al massimo quattro volte la luminanza lineare della rappresentazione SDR. In pratica, ciò significa che le parti più luminose della scena possono essere mostrate fino a 4 volte più luminose.
- In pratica, questo valore è in genere maggiore di 1,0.
- Deve sempre essere maggiore o uguale a Aumento dei contenuti minimo.
Potenziamento dei contenuti minimo (
min_content_boost
nelle equazioni)- Questo valore consente al creator di contenuti di limitare l'oscuramento di un'immagine quando viene visualizzata su un display HDR rispetto alla resa SDR. Questo valore è una costante per una determinata immagine.
- Se, ad esempio, il valore è 0,5, per un determinato pixel la luminanza lineare della rappresentazione HDR visualizzata deve essere (almeno) 0,5 volte la luminanza lineare della rappresentazione SDR.
- In pratica, questo valore è generalmente uguale o inferiore a 1,0.
- Deve sempre essere inferiore o uguale a Aumento dei contenuti massimo.
Aumento massimo della visualizzazione (
max_display_boost
nelle equazioni)- Il boost massimo supportato da un display, in un determinato momento. Questo valore può cambiare nel tempo in base alle impostazioni del dispositivo e ad altri fattori, come le condizioni di illuminazione ambientale o il numero di pixel luminosi sullo schermo.
- Ad esempio, se questo valore è 4,0, il display è in grado di visualizzare un pixel che è al massimo quattro volte più luminoso del punto bianco SDR. Questo valore è sempre >= 1,0, poiché il display può sempre mostrare un bianco HDR almeno uguale a quello SDR.
Miglioramento display
- È uguale al valore più basso tra l'incremento massimo dei contenuti e l'incremento massimo della visualizzazione. Questo valore è sempre >= 1.0.
- Ad esempio, se il miglioramento massimo dei contenuti è 4,0 e il miglioramento massimo della visualizzazione è 3,0, il miglioramento della visualizzazione è 3,0. I pixel vengono visualizzati fino a 3 volte più luminosi rispetto all'SDR, poiché le funzionalità di visualizzazione sono il fattore limitante.
- Un altro esempio: se il boost dei contenuti massimo è 4,0 e il boost della visualizzazione è 5,0, il boost della visualizzazione è 4,0. I pixel vengono visualizzati con una luminosità 4 volte superiore rispetto a SDR, poiché il fattore limitante è l'intento dei contenuti.
Rendezione HDR target
- La resa HDR ideale, secondo il creator di contenuti.
Rendicontazione HDR adattata
- La resa HDR finale visualizzata sul display, dopo aver adattato la resa HDR target per l'attuale incremento del display.
Mappa guadagno (
recovery(x, y)
nelle equazioni)- Una mappa che indica quanto illuminare ciascun pixel nella rappresentazione SDR per produrre la rappresentazione HDR target. Questa mappa può essere monocanale o multicanale. Una mappa multicanale indica un guadagno separato per ogni canale di colore, ad esempio rosso, verde e blu. Questo documento illustra il caso di una mappa monocanale.
clamp(x, a, b)
- Applica un limite superiore e inferiore al valore x nell'intervallo [a, b].
exp2(x)
- Esponenziale base 2; 2x.
floor(x)
- Restituisce il numero intero più vicino uguale o minore di x.
log2(x)
- Logaritmo in base 2; log2(x)
pow(b, x)
- Potenza; bx.
XMP
- Extensible Metadata Platform. Uno standard che definisce un metodo per codificare i metadati in un contenitore di immagini; definito dalla specifica XMP ISO 16684-1:2011(E) Parte 1.
Formato multifoto
- Multi-Picture Format è una tecnica sviluppata dalla Camera and Imaging Products Association (CIPA) per archiviare più immagini con codifica JPEG in un singolo file JPEG.
- Per ulteriori informazioni, consulta la dipendenza correlata, White Paper di CIPA DC-x 007-2009 Multi-Picture Format.
GContainer
- GContainer è un metodo per archiviare più immagini in un contenitore di immagini, dove un'immagine è considerata l'immagine principale. Eventuali altre immagini sono considerate versioni alternative o ausiliarie. I metadati XMP vengono utilizzati per comunicare la presenza e il significato di eventuali immagini aggiuntive. Per ulteriori informazioni, consulta la sezione Dettagli GContainer.
Codifica
Questa sezione descrive come codificare un file JPEG conforme. Per ulteriori informazioni sul formato JPEG, consulta T.81 (09/92) Compressione digitale e codifica di immagini fisse a tono continuo nella sezione Dipendenze.
Generazione di mappe con guadagno
Le pipeline di imaging della fotocamera eseguono comunemente un'operazione di compressione dell'intervallo per comprimere i dati di luminanza con un intervallo dinamico più elevato nell'intervallo inferiore dei display SDR convenzionali. La mappa di guadagno fornisce un meccanismo per memorizzare dati sufficienti a recuperare i dati di luminanza dell'intervallo dinamico originale più elevati.
I seguenti calcoli in questa sezione si basano sull'aritmetica in virgola mobile.
Le seguenti funzioni descrivono l'immagine SDR:
SDR'(x, y)
è l'immagine principale non lineare (in genere con codifica gamma) a tre canali.SDR(x, y)
è la versione lineare dell'immagine principale a tre canali, ottenuta mediante la trasformazione in una versione lineare dello spazio di colore dell'immagine principale. Ad esempio, da uno spazio colore con una funzione di trasferimento sRGB a uno spazio colore lineare che conserva i colori primari sRGB.
La funzione Ysdr(x, y)
è definita nell'intervallo da 0,0 a 1,0 ed è la luminanza lineare dell'immagine principale con intervallo dinamico standard:
Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))
Definizioni simili per l'immagine HDR sono disponibili.
HDR'(x, y)
è il non lineare a tre canali, ovvero un'immagine codificata PQ o HLG.HDR(x, y)
è l'immagine HDR lineare a tre canali.
Yhdr(x, y)
è la luminanza in un determinato punto dell'immagine HDR:
Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))
Yhdr(x, y)
è definito nell'intervallo da 0,0 al massimo incremento dei contenuti.
Le immagini SDR e HDR devono avere la stessa risoluzione. Il profilo colore dell'immagine SDR definisce lo spazio colore dell'immagine HDR.
Ad esempio, se l'immagine principale SDR ha un profilo di colore Display-P3, l'immagine HDR viene definita in base ai colori primari di quel profilo. Ciò significa che l'immagine HDR ha anche colori primari Display-P3.
La mappa del guadagno viene calcolata a partire da due immagini lineari contenenti la luminanza dell'immagine HDR desiderata, Yhdr(x, y)
, e l'immagine di luminanza dell'intervallo standard, Ysdr(x, y)
.
La funzione pixel_gain(x, y)
è definita come il rapporto tra la funzione Yhdr(x, y)
e la funzione Ysdr(x, y)
:
pixel_gain(x, y) = (Yhdr(x, y) + offset_hdr) / (Ysdr(x, y) + offset_sdr)
Il comportamento della funzione pixel_gain(x, y)
, dove Ysdr(x, y)
e offset_sdr
sono entrambi
zero, è definito dall'implementazione.
Ad esempio, le implementazioni possono gestire il caso in cui Ysdr(x, y)
e
offset_sdr
sono entrambi pari a zero definendo pixel_gain(x, y)
come 1,0. In alternativa,
anche le implementazioni evitano questo scenario utilizzando un valore offset_sdr
diverso da zero.
L'implementazione potrebbe scegliere i valori di offset_sdr
e offset_hdr
.
La mappa del guadagno è una funzione scalare che codifica pixel_gain(x, y)
in uno spazio logaritmico, rispetto al miglioramento massimo dei contenuti e al miglioramento minimo dei contenuti:
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)
Il comportamento della funzione recovery(x, y)
in cui pixel_gain(x, y)
è pari a zero è
l'implementazione definita, perché log2(0)
non è definito.
map_gamma
è un numero con virgola mobile che deve essere maggiore di 0,0 e viene scelto dall'implementazione.
I valori di incremento massimo dei contenuti e incremento minimo dei contenuti sono definiti dall'implementazione e possono essere decisi arbitrariamente dal creator di contenuti. L'incremento massimo dei contenuti deve essere maggiore o uguale a 1,0. Il miglioramento dei contenuti minimo deve essere compreso nell'intervallo [0,0, 1,0].
I valori in recovery(x, y)
sono limitati all'intervallo [0,0, 1,0].
La mappa di guadagno viene memorizzata in un'immagine JPEG secondaria e, pertanto, deve essere codificata utilizzando valori interi non firmati a 8 bit, quindi nell'intervallo [0, 255]. Ogni valore rappresenta un valore recovery(x, y)
e viene memorizzato in un pixel dell'immagine secondaria.
Per lo spazio di archiviazione di numeri interi non firmati a 8 bit, il valore codificato è definito come segue:
encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)
Il calcolo della funzione di codifica viene eseguito in virgola mobile e convertito alla fine nel risultato del numero intero senza segno a 8 bit mediante l'arrotondamento come indicato.
Questa codifica genera una rappresentazione di interi non firmati a 8 bit dei valori recovery(x, y)
, da 0,0 a 1,0. La mappa di guadagno codificata deve essere memorizzata in un elemento immagine secondario come file JPEG. L'implementazione sceglie il livello di compressione da utilizzare durante la codifica JPEG.
Dopo che la mappa del guadagno è stata archiviata in un'immagine secondaria, viene aggiunta a un'immagine principale con i metadati XMP MPF e GContainer. La directory GContainer dell'immagine principale deve contenere un elemento per l'immagine della mappa di guadagno.
La risoluzione della mappa del guadagno memorizzata è definita dall'implementazione e può essere diversa dalla risoluzione dell'immagine principale. Nel caso in cui la Gain Map venga scalata a una risoluzione diversa dall'immagine principale per l'archiviazione, il metodo di campionamento deve essere bilineare o migliore ed essere definito dall'implementazione.
L'orientamento della mappa del guadagno deve corrispondere a quello dell'immagine principale. Se presenti, i metadati di orientamento nell'immagine della mappa di guadagno archiviata, come in EXIF, non vengono utilizzati.
Se presente, il profilo di colore della mappa di guadagno non viene utilizzato.
Contenitore mappa di guadagno
Profilo di colore
Il profilo di colore dell'immagine deve essere indicato tramite un profilo ICC per l'immagine principale.
Attributi XMP
L'immagine principale contiene metadati XMP per definire almeno due immagini con informazioni semantiche aggiuntive per il formato della mappa di guadagno HDR.
Le seguenti sottosezioni contengono dettagli specifici per questo formato. Ulteriori informazioni sulla conformità generale a GContainer sono riportate nella sezione Dettagli di GContainer.
I valori degli attributi descritti nelle tabelle seguenti vengono memorizzati come valori XMP semplici dei tipi di valori di base XMP specificati.
Valori semantici degli elementi
La proprietà Item:Semantic
definisce il significato specifico per l'applicazione
di ogni elemento multimediale nella directory del container.
Valore | Descrizione |
---|---|
Principale | Indica che l'elemento multimediale è l'immagine principale, pronta per la visualizzazione, nel contenitore. La directory deve contenere un elemento "Principale". |
GainMap | Indica che l'elemento multimediale è una mappa di guadagno. La directory potrebbe contenere al massimo un elemento "GainMap". |
Metadati della mappa di guadagno HDR
I metadati della mappa di guadagno codificano le informazioni su come interpretare e applicare la mappa di guadagno per produrre la rappresentazione HDR dell'immagine principale.
L'URI dello spazio dei nomi XMP per l'estensione XMP dei metadati della mappa di guadagno è
http://ns.adobe.com/hdr-gain-map/1.0/
. Il prefisso dello spazio dei nomi predefinito è
hdrgm
.
Questi metadati sono memorizzati nel pacchetto XMP dell'immagine della mappa di guadagno e le seguenti proprietà devono essere visualizzate in rdf:Description
dell'XMP dell'immagine della mappa di guadagno:
Nome | Digitazione | Descrizione |
---|---|---|
hdrgm:Version | Testo | La versione del formato della mappa di guadagno in uso. Questa versione è "1.0". Required. |
hdrgm:BaseRenditionIsHDR | Booleano | Indica la gamma dinamica dell'immagine principale. "False" indica che l'immagine principale è in SDR e la mappa di guadagno può essere combinata con questa per produrre una resa HDR. "True" indica che l'immagine principale è HDR e la mappa di guadagno potrebbe essere combinata con quest'ultima per produrre la resa in SDR. Deve essere "False". Facoltativo; il valore predefinito è "False". |
hdrgm:GainMapMin | Array di valori reali ordinati o reali | Archivia i valori di map_min_log2 . Si tratta di
log2 del miglioramento minimo dei contenuti, ovvero il rapporto minimo consentito
della luminanza lineare per la resa HDR target rispetto a (diviso per) quella dell'immagine SDR, in un determinato pixel. Può essere un singolo numero reale o un array ordinato di numeri reali. Quando si tratta di un array ordinato di valori reali, può contenere un elemento che si applica a tutti i canali o tre elementi rispettivamente per i canali rosso, verde e blu. Deve essere inferiore o uguale a
hdrgm:GainMapMax . Facoltativo; il valore predefinito è 0,0. |
hdrgm:GainMapMax | Matrice reale o ordinata di valori reali | Memorizza i valori di map_max_log2 . Si tratta di
log2 del potenziamento massimo dei contenuti, ovvero il rapporto massimo consentito
della luminanza lineare per la resa HDR target rispetto a (diviso
per) quella dell'immagine SDR, in un determinato pixel. Può essere un singolo numero reale o un array ordinato di numeri reali. Un array ordinato di Real può contenere un elemento valido per tutti i canali o tre elementi rispettivamente per i canali rosso, verde e blu. Deve essere maggiore o uguale a
hdrgm:GainMapMin . Obbligatorio. |
hdrgm:Gamma | Matrice reale o ordinata di valori reali | Memorizza i valori di map_gamma . Si tratta della gamma da applicare ai valori della mappa memorizzati. Può essere un singolo numero reale o un array ordinato di
numeri reali. Un array ordinato di Real può contenere un elemento valido per tutti i canali o tre elementi rispettivamente per i canali rosso, verde e blu. Deve essere maggiore di 0,0. Facoltativo; il valore predefinito è 1,0. |
hdrgm:OffsetSDR | Array di valori reali ordinati o reali | Memorizza i valori di offset_sdr . Si tratta dell'offset da applicare ai valori dei pixel SDR durante la generazione e l'applicazione della mappa di guadagno.
Può essere un singolo reale o un array ordinato di valori reali. Quando si tratta di un array ordinato di valori reali, può contenere un elemento che si applica a tutti i canali o tre elementi per i canali rosso, verde e blu. Deve essere pari o superiore a 0,0.
Facoltativo; il valore predefinito è 0,015625 (1/64). |
hdrgm:OffsetHDR | Array di valori reali ordinati o reali | Memorizza i valori di offset_hdr . Si tratta dell'offset da applicare ai valori dei pixel HDR durante la generazione e l'applicazione della mappa del guadagno.
Può essere un singolo numero reale o un array ordinato di numeri reali. Quando si tratta di un array ordinato di valori reali, può contenere un elemento che si applica a tutti i canali o tre elementi per i canali rosso, verde e blu. Deve essere pari a 0,0 o superiore.
Facoltativo; il valore predefinito è 0,015625 (1/64). |
hdrgm:HDRCapacityMin | Esiste | Memorizza il valore di hdr_capacity_min . Si tratta di
log2 del valore minimo dell'aumento della visualizzazione per il quale viene applicata la mappa. Questo valore influisce anche su quanto applicare la mappa del guadagno in base al miglioramento della visualizzazione. Deve essere pari a 0,0 o superiore. Facoltativo; il valore predefinito è 0,0. |
Hdrgm:HDRCapacitàMax | Esiste | Memorizza il valore di hdr_capacity_max . Si tratta di
log2 del valore massimo dell'aumento della visualizzazione per il quale la mappa viene applicata completamente. Questo valore influisce anche su quanto applicare la mappa del guadagno in base al miglioramento della visualizzazione. Deve essere maggiore di hdrgm:HDRCapacityMin . Obbligatorio. |
Esempio di mappa XMP del guadagno
Il seguente esempio di pacchetto XMP della mappa di guadagno valido contiene i metadati ricavati dal file di esempio illustrato nella sezione Introduzione.
<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>
Archiviazione MPF della mappa di guadagno
L'immagine della mappa del guadagno deve essere archiviata come immagine aggiuntiva come definito in CIPA DC-x 007-2009 Multi-Picture Format, come indicato nella sezione Dipendenze.
Decodifica
Questa sezione descrive come decodificare la mappa di guadagno da un file JPEG conforme.
Segnale del formato
Un file JPEG conforme a questo formato può essere identificato dalla presenza di hdrgm:Version="1.0"
nel pacchetto XMP dell'immagine principale, dove hdrgm
è l'URI dello spazio dei nomi http://ns.adobe.com/hdr-gain-map/1.0/
.
Individua l'immagine della mappa dei profitti
Per maggiori dettagli sull'analisi e sulla decodifica dell'immagine, consulta la seguente sezione Dettagli di GContainer. Un elemento semantico "GainMap" all'interno del file XMPrdf:Directory
viene utilizzato per segnalare la posizione di un'immagine della mappa di guadagno.
In alternativa, l'IFD dell'indice MPF e l'XMP delle immagini di scansione vengono utilizzati per determinare la posizione di una mappa di guadagno.
Gestire metadati non validi
I metadati sono considerati non validi se non è presente un campo obbligatorio o se è presente un campo con un valore non valido. Un valore può essere non valido perché non è analizzabile nel tipo specificato o perché non rientra nell'intervallo previsto.
Se vengono rilevati metadati non validi, la mappa del guadagno deve essere ignorata e deve essere visualizzata l'immagine SDR.
Display
I file codificati nel formato della mappa di guadagno HDR possono essere visualizzati su display SDR convenzionali o su display HDR in grado di produrre un'uscita con una maggiore luminosità.
Utilizza la mappa del guadagno per creare la resa HDR adattata
I seguenti calcoli in questa sezione presuppongono l'aritmetica a virgola mobile.
encoded_recovery(x, y)
è il valore intero non firmato a 8 bit a canale
dell'immagine della mappa di guadagno.
Se la mappa del guadagno ha una risoluzione diversa rispetto all'immagine principale,
encoded_recovery(x, y)
viene invece determinato da un campionamento filtrato dell'immagine
della mappa del guadagno per x e y nell'intervallo rispettivamente di larghezza e altezza dell'immagine principale. Il metodo di filtraggio deve essere bilineare o
migliore ed è definito dall'implementazione.
map_gamma
viene determinato dal campo dei metadati hdrgm:Gamma
.
log_recovery(x, y)
è il guadagno di pixel in virgola mobile normalizzato in uno
spazio logaritmico:
recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)
Il miglioramento massimo della visualizzazione è un valore scalare a virgola mobile definito come il rapporto tra il punto di bianco HDR corrente e il punto di bianco SDR corrente. Questo valore viene fornito dal sistema di visualizzazione e può cambiare nel tempo.
hdr_capacity_max
viene determinato dal campo dei metadati hdrgm:HDRCapacityMax
.
Il valore hdr_capacity_min
è determinato dal campo dei metadati hdrgm:HDRCapacityMin
.
weight_factor
è determinato come segue quando hdrgm:BaseRenditionIsHDR
è
"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)
Quando hdrgm:BaseRenditionIsHDR
è "True", la seconda equazione è:
weight_factor = 1.0 - clamp(unclamped_weight_factor, 0.0, 1.0)
gain_map_max
viene determinato dal campo dei metadati hdrgm:GainMapMax
.
Il valore gain_map_min
è determinato dal campo dei metadati hdrgm:GainMapMin
.
offset_sdr
viene determinato dal campo dei metadati hdrgm:OffsetSDR
. offset_hdr
viene determinato dal campo dei metadati hdrgm:OffsetHDR
.
La resa HDR adattata lineare può essere calcolata come segue:
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
Se necessario, l'implementazione potrebbe applicare una trasformazione a HDR(x, y)
per inserire i dati nello spazio previsto dal display. Eventuali trasformazioni di questo tipo devono essere
colorimetricamente corrette.
Dettagli GContainer
Questa sezione specifica requisiti aggiuntivi in modo che questo formato sia conforme ai metadati XML di GContainer. I metadati vengono serializzati in base alla Parte 1 della specifica XMP ISO 166841:2011(E) e incorporati nel file immagine principale come descritto nella Parte 3 della specifica Adobe XMP: archiviazione nei file. Il file immagine principale contiene i seguenti elementi, formattati come RDF/XML.
Requisiti dei pacchetti XMP
Il pacchetto XMP deve includere l'estensione XMP dei metadati della mappa di guadagno tramite l'URI del nome spazio http://ns.adobe.com/hdr-gain-map/1.0/
. Il prefisso dello spazio dei nomi predefinito è hdrgm
.
Il pacchetto XMP deve definire hdrgm:Version="1.0"
.
Elemento contenitore
Lo spazio dei nomi XMP per l'estensione XMP GContainer è
http://ns.google.com/photos/1.0/container/
. Il prefisso dello spazio dei nomi predefinito è
Container
.
L'immagine principale contiene un elemento Container:Directory
nei metadati XMP
che definisce l'ordine e le proprietà del file multimediale successivo nel file
contenutore. Ogni file nel contenitore ha un elemento multimediale corrispondente in Container:Directory
. L'elemento multimediale descrive la posizione nel contenitore dei file e le proprietà di base di ciascun file concatenato.
L'elemento contenitore viene codificato nei metadati XMP dell'immagine principale e definisce una directory di elementi multimediali nel contenitore. Gli elementi multimediali devono trovarsi nel file contenitore nello stesso ordine degli elementi degli elementi multimediali nella directory e devono essere imballati in modo compatto.
La directory può contenere un solo elemento immagine "Principale" e deve essere il primo elemento della directory.
Nome elemento | Digitazione | Descrizione |
---|---|---|
Contenitore:directory | Array ordinato di strutture | Array ordinato di struct contenenti ciascuna una struct Container:Item
che definisce il layout e i contenuti del contenitore. |
Elemento elemento
Gli elementi Item descrivono la modalità di utilizzo di ciascun elemento multimediale da parte dell'applicazione.
L'URI dello spazio dei nomi XMP per l'estensione XMP dell'elemento GContainer è
http://ns.google.com/photos/1.0/container/item/
. Il prefisso dello spazio dei nomi predefinito è Item
.
Il primo elemento multimediale deve essere l'immagine principale. Deve specificare Item:Semantic
= "Primary"
e un Item:Mime
elencato in
Valori dei tipi MIME degli articoli.
La lunghezza dell'elemento immagine principale viene determinata analizzando l'immagine principale in base al relativo tipo MIME a partire dall'inizio del contenitore del file.
Gli elementi multimediali possono contenere un attributo Item:Padding
che specifica un ulteriore spaziatura tra la fine dell'elemento multimediale e l'inizio dell'elemento multimediale successivo. Se presente nell'ultimo elemento multimediale in Container:Directory
,
Item:Padding
indica il riempimento tra la fine dell'elemento e la fine del
file.
Ogni elemento multimediale deve contenere gli attributi Item:Mime
e Item:Semantic
.
Gli elementi multimediali immagine secondari devono contenere attributi Item:Length
.
Gli elementi multimediali sequenziali possono condividere i dati delle risorse all'interno del contenitore dei file. Il primo elemento multimediale determina la posizione della risorsa nel contenitore dei file e gli elementi multimediali condivisi successivi hanno Item:Length
impostato su 0. Se i dati della risorsa sono essi stessi un contenitore, Item:URI
potrebbe essere utilizzato per determinare la posizione dei dati dell'elemento multimediale all'interno della risorsa.
La posizione delle risorse elemento multimediale nel contenitore viene determinata sommando la lunghezza della codifica dell'immagine principale, i valori Item:Length
delle risorse elemento multimediale secondarie precedenti e tutti i valori Item:Padding
precedenti. Item:Padding
è considerato pari a 0 nelle risorse elemento multimediale che non specificano il relativo valore.
Nome attributo | Digitazione | Descrizione |
---|---|---|
Articolo:Mime | Testo | Stringa semplice che indica il tipo MIME dell'elemento multimediale nel contenitore. Per una definizione, consulta la sezione Valori del tipo MIME dell'elemento. Required. |
Elemento:semantico | Testo | Stringa semplice che indica il significato specifico dell'elemento media per l'applicazione. Per una definizione, consulta la sezione Valori semantici dell'articolo. Required. |
Elemento:Lunghezza | Numero intero | Stringa semplice contenente una lunghezza in byte dell'elemento pari a un numero intero positivo. La lunghezza 0 indica che la risorsa dell'elemento multimediale è condivisa con l'elemento multimediale precedente. Obbligatorio per gli elementi multimediali secondari. Facoltativo per l'elemento multimediale dell'immagine principale. |
Articolo:Etichetta | Testo | Stringa definita dall'implementazione utilizzata per distinguere più elementi dell'elemento con lo stesso Item:Semantic . Facoltativo. |
Elemento: spaziatura interna | Numero intero | Una stringa contenente una lunghezza in byte di un numero intero positivo di spazi aggiuntivi tra la fine dell'elemento multimediale e l'inizio dell'elemento multimediale successivo o la fine del file se utilizzato nell'ultimo elemento multimediale nel
Container:Directory . Se non è presente, si presume un valore pari a 0.
Facoltativo. |
Elemento:URI | Testo | Una stringa URI conforme alla sezione 8.11.9 della norma ISO/IEC 14496-12, contenente l'URI relativo dei dati multimediali all'interno della risorsa elemento multimediale. L'impostazione predefinita è la risorsa immagine principale. Facoltativo per i tipi MIME del formato file multimediale base ISO/IEC 14496-12. Non può essere utilizzato in altro modo. |
Valori del tipo MIME dell'elemento
L'attributo Item:Mime
definisce il tipo MIME di ogni dato
dell'elemento multimediale.
Valore | Descrizione |
---|---|
image/jpeg | Immagine JPEG. |
Esempio di XMP GContainer
Il seguente esempio di pacchetto GContainer XMP valido contiene metadati ricavati dal file di esempio illustrato nella sezione Introduzione.
<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>
Compatibilità con ISO 21496-1
ISO 21496-1 fornisce un meccanismo di incapsulamento alternativo per la codifica dei metadati della mappa di guadagno in un file immagine. Puoi codificare sia i metadati Ultra HDR sia i metadati ISO 21496-1 in un file JPEG utilizzando una singola immagine della mappa di guadagno nel file.
Per la massima compatibilità multipiattaforma, le implementazioni e le app Android che implementano la propria codifica o decodifica dei file JPEG con mappe di guadagno devono supportare la codifica e la decodifica sia per i metadati Ultra HDR v1 sia per quelli ISO 21496-1. Durante un'operazione di codifica, l'implementazione o l'app deve codificare entrambi i formati dei metadati. Se durante un'operazione di decodifica sono presenti entrambi i tipi di metadati, l'implementazione o l'app dovrebbe preferire l'utilizzo dei metadati ISO 21496-1.
Log delle modifiche
Questa sezione contiene informazioni sulle modifiche tra le versioni di questa specifica.
v1.1
Tutte le modifiche in questa versione della specifica Ultra HDR sono informative e riguardano la compatibilità con ISO 21496-1. Non sono state apportate modifiche al formato del file effettivo.
- Aggiungi la sezione Compatibilità con ISO 21496-1.
v1.0
La pubblicazione iniziale delle specifiche Ultra HDR.