Formato immagine Ultra HDR v1.0

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 è:

  1. Codifica

    1. Generare più mappe
    2. Aumenta la compressione della mappa
    3. Generazione di container delle mappe di guadagno
  2. Decodifica


Esempio
Layout dei file in formato dell'immagine Ultra HDR, con offset e metadati associati
informazioni

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:

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

  • 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>