Introduzione
Questo documento definisce il comportamento di un nuovo formato file che codifica un immagine della mappa del guadagno dell'intervallo logaritmico in un file immagine JPEG. Lettori precedenti che non supporta il nuovo formato, legge e visualizza i contenuti dinamici un'immagine di intervallo dal file immagine.I lettori che supportano il formato si combinano l'immagine principale con la mappa del guadagno e il rendering di un'immagine High Dynamic Range display compatibili.
La parte restante di questo documento descrive i metodi dei processi necessari per utilizzare questo formato. A livello generale, il ciclo di vita della conformità di un'immagine a questo formato è:
Codifica
- Generare più mappe
- Aumenta la compressione della mappa
- Generazione di container delle mappe di guadagno
Decodifica
Figura 1. Esempio di layout di file e metadati pertinenti.
Motivazione
L'obiettivo di questo formato file è codificare informazioni aggiuntive nell'immagine SDR. file che possono essere utilizzati in combinazione con la tecnica di visualizzazione per produrre le loro versioni HDR ottimali, in un unico file.
Affinché ciò sia pratico, il formato file deve:
- Essere compatibile con le versioni precedenti, in modo che, sugli spettatori ingenui, l'immagine SDR convenzionale .
- Non occupano troppo spazio.
Inoltre, la tecnica di visualizzazione deve:
- Non richiedono un'elaborazione intensiva per la decodifica.
- Adattarsi a qualsiasi rapporto tra i punti bianchi HDR e SDR di un display, che può variare significativamente da un dispositivo all'altro o anche a livello temporale dispositivo.
Infine, la tecnica deve essere in grado di eseguire tutte le azioni precedenti senza mai:
- Clip dei momenti salienti.
- Ombre schiaccianti.
- 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:
- Specifiche Adobe XMP - Parte 3: spazio di archiviazione nei file
- Specifiche XMP ISO 16684-1:2019 Parte 1
- Formato file multimediale di base ISO/IEC 14496-12
- T.81 (09/92) Compressione digitale e codifica del suono continuo immagini
- White paper di CIPA DC-x 007-2009 Multi-Picture Format
Definizioni
Display SDR
- Un display convenzionale, non progettato per la visualizzazione di contenuti HDR. Questi display generalmente producono una luminosità massima nominale di circa 400 cd/m2 o inferiore.
Display HDR
- Un display progettato per i contenuti HDR. Questi display solitamente producono luminosità di picco nominale maggiore di quella di un display SDR, in genere 800 cd/m2 o superiore; generalmente hanno anche un contrasto migliore proporzioni rispetto ai display SDR.
Immagine principale
- La prima istanza di un'immagine in un file GContainer con contenuti multimediali secondari file aggiunti. L'immagine principale contiene i metadati XMP di GContainer definendo l'ordine e le proprietà dell'elemento multimediale secondario successivo nel contenitore di file.
Immagine secondaria
- I file degli elementi multimediali successivi aggiunti all'immagine principale in un GContainer.
Compressione intervallo
- In fotografia, le scene del mondo reale spesso hanno una gamma più dinamica di una il display SDR può rappresentare. Operazioni come la compressione dell'intervallo, chiamate mappatura tonale locale, sono necessarie per ridurre la gamma dinamica di dell'immagine. Questa riduzione non consente di tagliare le alte luci o schiacciarsi. ombreggiate, preservando il più possibile il contrasto locale.Provi a riducono la dimensione dei grandi bordi di luminanza nell'immagine, maggiore al suo contrasto globale, cercando di mantenere la dimensione piccoli bordi di luminanza, che sono i dettagli.Sebbene ci siano molti in diverse implementazioni, un'operazione di questo tipo è lo standard fotocamere digitali oggi.
Punto di bianco SDR
- La luminanza lineare massima dei contenuti SDR su un display in una determinata in un determinato momento.
Punto di bianco HDR
- La luminanza lineare massima dei contenuti HDR su un display in una determinata in un determinato momento. Questo valore è generalmente 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 che può avere, quando mostrata su un display HDR, rispetto alla resa in SDR.
- Questo valore è una costante per una determinata immagine. Ad esempio, se è quattro, per ogni pixel la luminanza lineare la resa HDR visualizzata deve essere al massimo 4 volte la luminanza lineare la resa in SDR. In pratica, ciò significa che le parti più luminose la scena può essere mostrata fino a 4 volte più luminosa.
- In pratica, questo valore è generalmente maggiore di 1,0.
- Sempre superiore o uguale al Incremento minimo dei contenuti.
Aumento minimo dei contenuti (
min_content_boost
nelle equazioni)- Questo valore consente al creator di limitare l'effetto l'immagine, quando mostrata su un display HDR, rispetto alla SDR e la rappresentazione grafica.Questo valore è una costante per una determinata immagine.
- Se, ad esempio, il valore è 0,5, per ogni pixel specificato, la riga la luminanza della resa HDR visualizzata deve essere (almeno) 0,5x luminanza lineare della resa in SDR.
- In pratica, questo valore è generalmente uguale o inferiore a 1,0.
- Sempre minore o uguale a Massimizza il miglioramento dei contenuti.
Aumento massimo della visualizzazione (
max_display_boost
nelle equazioni)- Il booster massimo disponibile supportato da un display, in un determinato momento nel tempo. Questo valore può cambiare nel tempo in base alle impostazioni del dispositivo e ad altre come le condizioni di luce ambientale o il numero di pixel luminosi sullo schermo.
- Ad esempio, se questo valore è 4,0, la visualizzazione è in grado di visualizzazione di un pixel che sia al massimo quattro volte più luminoso di SDR punto bianco. Questo valore è sempre >= 1,0, in quanto il display può sempre e devono essere visualizzati in bianco HDR luminoso almeno come SDR.
Miglioramento display
- Uguale al valore minore tra l'incremento massimo dei contenuti e il miglioramento massimo della visualizzazione. Questo è sempre >= 1,0.
- Ad esempio, se il boost massimo dei contenuti è 4.0 e il miglioramento massimo del display è 3.0, il display Boost è 3.0. La luminosità dei pixel è 3 volte più alta rispetto all'SDR, poiché il fattore limitante è rappresentato dalle capacità di visualizzazione.
- Ad esempio, se il miglioramento massimo dei contenuti è 4.0 e il booster massimo del display è 5.0, il display boost è 4.0. I pixel vengono visualizzati fino a 4 volte più luminoso di SDR, poiché il fattore limitante è l'intento dei contenuti.
Rendering HDR target
- La resa HDR ideale, secondo il creator di contenuti.
Rendering HDR adattato
- La resa HDR finale mostrata sul display, dopo adattando la resa HDR target all'attuale miglioramento del display.
Mappa guadagno (
recovery(x, y)
nelle equazioni)- Una mappa che indica di quanto aumentare la luminosità di ogni pixel nel formato SDR per produrre la resa HDR target. Questa mappa può essere a canale singolo multicanale. Una mappa multicanale indica un guadagno distinto per ogni canale cromatico, ad esempio rosso, verde e blu. Questo documento illustra nel caso della mappa monocanale.
clamp(x, a, b)
- Fissa il valore x all'intervallo [a, b].
exp2(x)
- Esponenziale in base 2; 2volte.
floor(x)
- Restituisce il numero intero più vicino uguale o inferiore a x.
log2(x)
- Logaritmo in base 2; log2(x)
pow(b, x)
- Esposizione; Bx.
XMP
- Extensible Metadata Platform. Uno standard che definisce un metodo per codifica i metadati in un container di immagini; definita da ISO 16684-1:2011(E) XMP Specification Part 1.
Formato multi-immagine
- Multi-Picture Format è una tecnica sviluppata da Camera and Imaging Products Association (CIPA) per l'archiviazione di più immagini con codifica JPEG in un singolo file JPEG.
- Per ulteriori informazioni, consulta la relativa dipendenza, White paper di CIPA DC-x 007-2009 Multi-Picture Format.
GContainer
- GContainer è un metodo per archiviare più immagini in un'unica immagine in cui un'immagine è considerata l'immagine principale. Qualsiasi le immagini aggiuntive sono considerate versioni alternative o ausiliarie. I metadati XMP sono usati per comunicare la presenza e il significato di qualsiasi immagini aggiuntive. Per ulteriori informazioni, consulta Dettagli.
Codifica
Questa sezione descrive come codificare un file JPEG conforme. Fai riferimento alla sezione T.81 (09/92) Compressione digitale e codifica di immagini continue nella sezione Dipendenze, per saperne di più sul formato JPEG.
Generare più mappe
Le pipeline di imaging della videocamera eseguono in genere un'operazione di compressione dell'intervallo comprimono i dati di luminanza con intervallo dinamico più elevato alla gamma più bassa dei modelli Display SDR. La mappa di guadagno fornisce un meccanismo per memorizzare dati sufficienti a recuperare i dati originali di luminanza dell'intervallo dinamico più alto.
I seguenti calcoli in questa sezione si basano sull'aritmetica in virgola mobile.
Le seguenti funzioni descrivono l'immagine SDR:
SDR'(x, y)
è il segmento a tre canali non lineare (in genere con codifica gamma) nell'immagine principale.SDR(x, y)
è la versione lineare dell'immagine principale a tre canali, ottenuto mediante la trasformazione in una versione lineare del colore principale dell'immagine spazio. Ad esempio, da uno spazio colore con una funzione di trasferimento sRGB a una uno spazio colore lineare che preserva 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 standard Dynamic Range:
Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))
Definizioni simili per l'immagine HDR sono disponibili.
HDR'(x, y)
è la codifica non lineare a tre canali, ovvero con codifica PQ o HLG dell'immagine.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))
Il valore Yhdr(x, y)
è compreso tra 0,0 e il miglioramento massimo dei contenuti.
Le immagini SDR e HDR devono avere la stessa risoluzione. Il profilo di colore della tecnologia 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 è definita in base ai colori primari di quel profilo. Questo significa che l'immagine HDR ha anche i colori primari Display-P3.
La mappa del guadagno viene calcolata a partire da due immagini lineari contenenti l'immagine HDR desiderata
luminanza, Yhdr(x, y)
e l'immagine di luminanza con intervallo standard, Ysdr(x, y)
.
La funzione pixel_gain(x, y)
è definita come il rapporto tra 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 i valori zero sono definiti dall'implementazione.
Ad esempio, le implementazioni sono in grado di 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,
Inoltre, le implementazioni evitano questo scenario utilizzando un valore offset_sdr
diverso da zero.
L'implementazione potrebbe scegliere i valori offset_sdr
e offset_hdr
.
La mappa del guadagno è una funzione scalare che codifica pixel_gain(x, y)
in una
spazio logaritmico in rapporto all'incremento massimo di contenuti e all'incremento minimo di 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)
dove pixel_gain(x, y)
è zero è
perché log2(0)
non è definito.
map_gamma
è un numero con rappresentazione in virgola mobile che deve essere maggiore di 0,0 ed è
scelti dall'implementazione.
I valori di incremento massimo dei contenuti e incremento minimo dei contenuti sono dall'implementazione e può essere deciso arbitrariamente dal creator dei contenuti. L'incremento massimo dei contenuti deve essere maggiore o uguale a 1,0. Il booster minimo dei contenuti deve essere nell'intervallo (0,0, 1,0].
I valori in recovery(x, y)
sono limitati all'intervallo [0,0, 1,0].
La mappa del guadagno è memorizzata in un'immagine JPEG secondaria e pertanto deve essere codificata
utilizzando valori interi senza segno a 8 bit, quindi nell'intervallo [0, 255]. Ogni valore
rappresenta un valore recovery(x, y)
e viene archiviato in un pixel della
dell'immagine.
Per l'archiviazione di numeri interi senza segno a 8 bit, il valore codificato è definito come seguenti:
encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)
Il calcolo della funzione di codifica viene eseguito in rappresentazione in virgola mobile e convertito in l'estremità al risultato del numero intero senza segno a 8 bit mediante l'arrotondamento come indicato.
Questa codifica produce una rappresentazione di un numero intero senza segno a 8 bit
Valori di recovery(x, y)
, compresi tra 0,0 e 1,0. La mappa del guadagno codificata deve essere memorizzata
un'immagine secondaria come JPEG. L'implementazione sceglie la quantità
per la compressione da utilizzare durante la codifica JPEG.
Una volta archiviata in un'immagine secondaria, la mappa di guadagno viene aggiunta a un con metadati MPF e GContainer XMP. L'immagine principale di GContainer deve contenere un elemento per l'immagine della mappa del guadagno.
La risoluzione della mappa del guadagno memorizzata è definita dall'implementazione e può essere diversa da quella dell'immagine principale. Nel caso in cui la metrica Profitto La mappa viene scalata a una risoluzione diversa dall'immagine principale per l'archiviazione, di campionamento deve essere bilineare o migliore ed è definito dall'implementazione.
L'orientamento della mappa dei guadagni deve corrispondere a quello dell'immagine principale. Se presenti, qualsiasi metadato di orientamento nell'immagine della mappa dei guadagni memorizzata, come in EXIF, non viene utilizzato.
Se presente, il profilo di colore della mappa di guadagno non viene utilizzato.
Contenitore mappa di guadagno
Profilo colore
Il profilo di colore dell'immagine deve essere indicato tramite un profilo ICC per nell'immagine principale.
Attributi XMP
L'immagine principale contiene metadati XMP per definire almeno due immagini con ulteriori informazioni semantiche per il formato della mappa di guadagno HDR.
Le seguenti sottosezioni contengono dettagli specifici di questo formato. Aggiuntivo relative alla conformità generale a GContainer sono specificate nel Sezione Dettagli GContainer.
I valori degli attributi descritti nelle seguenti tabelle vengono archiviati in formato XMP semplice dei tipi di valore base XMP specificati.
Valori semantici degli elementi
La proprietà Item:Semantic
definisce il significato specifico per l'applicazione
di ciascun elemento multimediale nella directory del container.
Valore | Descrizione |
---|---|
Principale | Indica che l'elemento multimediale è l'immagine principale, pronto per la visualizzazione, nel container. La directory deve contenere un elemento "Principale" molto utile. |
GainMap | Indica che l'elemento multimediale è una mappa di guadagno. La directory potrebbe contenere al massimo un "GainMap" molto utile. |
Metadati guadagno HDR
I metadati della mappa di acquisizione codificano le informazioni su come interpretare e applicare il 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 del guadagno e nei seguenti
devono essere visualizzate nell'immagine XMP dell'immagine della mappa del guadagno: rdf:Description
Nome | Tipo | Descrizione |
---|---|---|
hdrgm:Versione | Testo | La versione del formato della mappa del guadagno in uso. Questa versione è "1.0". Required. |
hdrgm:BaseRenderingtionIsHDR | Booleano | Indica l'intervallo dinamico dell'immagine principale. "Falso" indica l'immagine principale è SDR e la mappa del guadagno può essere combinata con quest'ultima per produrre Rendering HDR. "Vero" indica che l'immagine principale è HDR e la mappa di guadagno potrebbe essere combinato con quest'ultimo per produrre la resa in SDR. Deve essere "False". Facoltativo; il valore predefinito è "False". |
hdrgm:GainMapMin | Matrice reale o ordinata di valori reali | Archivia i valori di map_min_log2 . Questo è
log2 di aumento minimo dei contenuti, che è il rapporto minimo consentito
della luminanza lineare per la resa HDR target rispetto a (diviso
da) quella dell'immagine SDR, a un determinato pixel. Può essere un singolo valore reale o un
array ordinato di real. Un array ordinato di Real può contenere uno
valido per tutti i canali o tre per i canali rosso, verde e
rispettivamente per i canali blu. Deve essere minore o uguale a
hdrgm:GainMapMax . Facoltativo; il valore predefinito è 0,0. |
hdrgm:GainMapMax | Matrice reale o ordinata di valori reali | Archivia i valori di map_max_log2 . Questo è
log2 del miglioramento massimo dei contenuti, che è il rapporto massimo consentito
della luminanza lineare per la resa HDR target rispetto a (diviso
da) quella dell'immagine SDR, a un determinato pixel. Può essere un singolo valore reale o un
array ordinato di real. Un array ordinato di Real può contenere uno
valido per tutti i canali o tre per i canali rosso, verde e
rispettivamente per i canali blu. Deve essere maggiore o uguale a
hdrgm:GainMapMin . Obbligatorio. |
hdrgm:Gamma | Matrice reale o ordinata di valori reali | Archivia i valori di map_gamma . Questo è il valore della gamma
si applicano ai valori delle mappe memorizzati. Può essere un singolo reale o un array ordinato di
Reali. Un array ordinato di valori Real può contenere un solo elemento
a tutti i canali o a tre elementi per i canali rosso, verde e blu
rispettivamente. Deve essere maggiore di 0,0. Facoltativo; il valore predefinito è
1,0. |
hdrgm:OffsetSDR | Matrice reale o ordinata di valori reali | Archivia i valori di offset_sdr . Questo è l'offset
si applicano ai valori 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 un array ordinato di
Reali, possono contenere un elemento valido per tutti i canali o tre elementi
rispettivamente per i canali rosso, verde e blu. Deve essere pari a 0,0 o superiore.
Facoltativo; il valore predefinito è 0,015625 (1/64). |
hdrgm:OffsetHDR | Matrice reale o ordinata di valori reali | Archivia i valori di offset_hdr . Questo è l'offset
viene applicata ai valori pixel HDR durante la generazione e l'applicazione della mappa di guadagno.
Può essere un singolo reale o un array ordinato di valori reali. Quando un array ordinato di
Reali, possono contenere un elemento valido per tutti i canali o tre elementi
rispettivamente 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 . Questo è
log2 del valore di boost di visualizzazione minimo per il quale la mappa è
applicato. Questo valore influisce anche su quanto applicare la mappa di guadagno
sulla funzione display Boost. Deve essere pari a 0,0 o superiore. Facoltativo; predefinita
è 0,0. |
Hdrgm:HDRCapacitàMax | Esiste | Memorizza il valore di hdr_capacity_max . Questo è
log2 del valore di boost di visualizzazione massimo per il quale la mappa è
applicata completamente. Questo valore influisce anche su quanto applicare la mappa del guadagno
in base all'incremento del display. Deve essere maggiore di
hdrgm:HDRCapacityMin . Obbligatorio. |
Esempio di mappa di guadagno XMP
L'esempio seguente di un pacchetto XMP valido per la mappatura del guadagno contiene i metadati utilizzati 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 guadagno deve essere memorizzata come immagine aggiuntiva come definito nel CIPA DC-x 007-2009 Multi-Picture Format, come riferimento nella Dipendenze.
Decodifica
Questa sezione descrive come decodificare la mappa del guadagno da un file JPEG conforme.
Indicatore 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
è
dell'URI dello spazio dei nomi http://ns.adobe.com/hdr-gain-map/1.0/
.
Individuare l'immagine della mappa del guadagno
Per maggiori dettagli sull'analisi e sulla decodifica dell'immagine, consulta GContainer
Dettagli. Una "GainMap" elemento semantico all'interno dell'XMP
rdf:Directory
viene utilizzato per segnalare la posizione di un'immagine della mappa del guadagno.
In alternativa, MPF Index IFD e scansione delle immagini XMP è utilizzato per determinare
la posizione di una mappa di guadagno.
Gestire i metadati non validi
I metadati sono considerati non validi se non è presente un campo obbligatorio o se ce ne sono è presente un valore non valido. Un valore potrebbe non essere 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 la strategia SDR dell'immagine.
Display
I file codificati nel formato della mappa di guadagno HDR potrebbero essere visualizzati su display SDR convenzionali o su display HDR con luminanza maggiore come output.
Utilizza la mappa di guadagno per creare la resa HDR adattata
I seguenti calcoli in questa sezione si basano sull'aritmetica in virgola mobile.
encoded_recovery(x, y)
è il valore intero senza segno a canale singolo, a 8 bit
dall'immagine della mappa del guadagno.
Se la mappa dei guadagni ha una risoluzione diversa da quella dell'immagine principale:
encoded_recovery(x, y)
viene invece determinato da un campione filtrato di
guadagna l'immagine della mappa per x e y nell'intervallo tra larghezza e altezza dell'immagine principale,
rispettivamente. Il metodo di filtraggio deve essere bilineare o migliore ed è
dell'implementazione.
Il valore map_gamma
è determinato dal campo dei metadati hdrgm:Gamma
.
log_recovery(x, y)
è il guadagno in pixel in virgola mobile normalizzato in un
spazio logaritmico:
recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)
L'incremento massimo della visualizzazione è un valore in virgola mobile scalare definito come il rapporto tra il punto di bianco HDR attuale e diviso per il punto di bianco SDR attuale. Questo è fornito dal sistema di visualizzazione e può cambiare nel tempo.
Il valore hdr_capacity_max
è determinato dal campo dei metadati hdrgm:HDRCapacityMax
.
Il valore hdr_capacity_min
è determinato dal campo dei metadati hdrgm:HDRCapacityMin
.
weight_factor
viene determinato come segue quando hdrgm:BaseRenditionIsHDR
è
"Falso":
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)
Il valore gain_map_max
è determinato dal campo dei metadati hdrgm:GainMapMax
.
Il valore gain_map_min
è determinato dal campo dei metadati hdrgm:GainMapMin
.
Il valore offset_sdr
è determinato dal campo dei metadati hdrgm:OffsetSDR
. offset_hdr
è 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
nello spazio previsto dal display. Tali trasformazioni devono essere
colorimetricamente corretti.
Dettagli GContainer
Questa sezione specifica requisiti aggiuntivi per fare in modo che questo formato sia conforme con i metadati XML di GContainer. I metadati sono serializzati secondo lo standard ISO 166841:2011(E) XMP Specification Part 1 e incorporato all'interno del file immagine principale, come descritto nella specifica Adobe XMP, parte 3. Spazio di archiviazione in Files. Il file immagine principale contiene nel formato RDF/XML.
Requisiti dei pacchetti XMP
Il pacchetto XMP deve includere l'estensione XMP dei metadati della mappa guadagno tramite la
URI dello spazio dei nomi http://ns.adobe.com/hdr-gain-map/1.0/
. Lo spazio dei nomi predefinito
è hdrgm
.
Il pacchetto XMP deve definire hdrgm:Version="1.0"
.
Elemento contenitore
Lo spazio dei nomi XMP dell'estensione GContainer XMP è
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
definendo l'ordine e le proprietà del file multimediale successivo nel file
containerizzato. A ogni file nel contenitore corrisponde un elemento multimediale nel
Container:Directory
. L'elemento multimediale descrive la posizione nel file
e le proprietà di base di ogni file concatenato.
L'elemento container è codificato nei metadati XMP dell'immagine principale e definisce una directory di elementi multimediali nel container. Gli elementi multimediali devono essere individuati nel file contenitore, nello stesso ordine degli elementi multimediali e deve essere compresso.
La directory può contenere un solo elemento "Principale" e deve essere il primo dell'elemento nella directory.
Nome elemento | Tipo | Descrizione |
---|---|---|
Contenitore:directory | Array ordinato di strutture | Array ordinato di struct, ciascuno contenente un Container:Item
che definisce il layout e i contenuti del container. |
Elemento elemento
Gli elementi elemento descrivono il modo in cui ogni elemento multimediale viene utilizzato dall'applicazione.
L'URI dello spazio dei nomi XMP dell'estensione GContainer Item XMP è
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
elencati in
Valori di tipo MIME degli elementi.
La lunghezza dell'elemento dell'immagine principale è determinata dall'analisi dell'elemento principale in base al tipo MIME a partire dall'inizio del contenitore di file.
Gli elementi multimediali possono contenere un attributo Item:Padding
che specifica
spaziatura interna tra la fine dell'elemento multimediale e l'inizio del contenuto multimediale successivo
molto utile. Se presente nell'ultimo elemento multimediale in Container:Directory
,
Item:Padding
indica la spaziatura interna tra la fine dell'elemento e la fine del
.
Ogni elemento multimediale deve contenere il tipo Item:Mime
e gli attributi Item:Semantic
.
Gli elementi multimediali dell'immagine secondaria devono contenere attributi Item:Length
.
Gli elementi multimediali sequenziali possono condividere dati delle risorse all'interno del contenitore dei file. La
il primo elemento multimediale determina la posizione della risorsa nel contenitore di file,
e gli elementi multimediali condivisi successivi hanno Item:Length
impostato su 0. Nel caso in cui
i dati della risorsa sono essi stessi un container, Item:URI
potrebbe essere utilizzato per determinare
la posizione dei dati degli elementi multimediali all'interno della risorsa.
La posizione delle risorse degli elementi multimediali nel contenitore viene determinata sommando
la lunghezza della codifica dell'immagine principale, i valori Item:Length
della
le risorse dell'elemento multimediale secondario precedenti e tutte le Item:Padding
precedenti
e i relativi valori. Il valore di Item:Padding
è considerato pari a 0 sulle risorse degli elementi multimediali che non
e specificarne il valore.
Nome attributo | Tipo | Descrizione |
---|---|---|
Articolo:Mime | Testo | Stringa semplice che indica il tipo MIME dell'elemento multimediale nella containerizzato. Per una definizione, consulta la sezione Valori tipo MIME elemento. Required. |
Elemento:semantico | Testo | Stringa semplice che indica il significato specifico per l'applicazione del file multimediale molto utile. Per una definizione, consulta la sezione Valori semantici dell'elemento. Required. |
Articolo:Lunghezza | Numero intero | Stringa semplice contenente un numero intero positivo in byte dell'articolo. La lunghezza 0 indica che la risorsa dell'elemento multimediale è condivisa con la risorsa precedente elemento multimediale. Obbligatorio per gli elementi multimediali secondari. Facoltativo per l'istanza principale elemento multimediale immagine. |
Elemento:etichetta | Testo | Stringa definita dall'implementazione utilizzata per distinguere più elementi
con lo stesso Item:Semantic . Facoltativo. |
Articolo:Spaziatura interna | Numero intero | Una stringa contenente un numero intero positivo in byte di lunghezza
spaziatura interna tra la fine dell'elemento multimediale e l'inizio di quello successivo
elemento multimediale o la fine del file quando è utilizzato sull'ultimo elemento multimediale nella
Container:Directory . Se non presente, si presume il valore 0.
Facoltativo. |
Elemento:URI | Testo | Una stringa URI conforme alla sezione 8.11.9 dello standard ISO/IEC 14496-12, contenente i campi URI relativo dei dati multimediali all'interno della risorsa dell'elemento multimediale. Il valore predefinito è la risorsa dell'immagine principale. Facoltativo per i tipi MIME con formato file multimediale di base ISO/IEC 14496-12. Non può essere utilizzato in altro modo. |
Valori di tipo MIME dell'elemento
L'attributo Item:Mime
definisce il tipo MIME di ogni elemento multimediale
e i dati di Google Cloud.
Valore | Descrizione |
---|---|
immagine/jpeg | immagine JPEG. |
GContainer XMP di esempio
Nell'esempio seguente di un pacchetto GContainer XMP valido sono presenti metadati presi da il 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>