Format obrazu Ultra HDR w wersji 1.0

Wprowadzenie

Ten dokument definiuje nowy format pliku, który koduje obraz mapy wzmocnienia zakresu logarytmicznego w pliku JPEG. Starsze czytniki, które nie obsługują nowego formatu, odczytują i wyświetlają konwencjonalny obraz niskiego zakresu dynamicznego z pliku graficznego.Czytelnicy obsługujące ten format łączą obraz główny z mapą wzmocnienia i renderują obraz o dużym zakresie dynamicznym na zgodnych wyświetlaczach.

W pozostałej części tego dokumentu opisujemy metody wymagane do korzystania z tego formatu. Ogólnie cykl życia obrazu zgodnego z tym formatem to:

  1. Kodowanie

    1. Wygeneruj mapę
    2. Kompresja mapy
    3. Utwórz kontener mapy
  2. Dekodowanie


Przykładowy układ pliku w formacie obrazu ultra HDR z powiązanymi metadanymi i informacjami o przesunięciu

Rysunek 1. Przykładowy układ pliku i odpowiednie metadane.

Motywacja

Ten format umożliwia zakodowanie dodatkowych informacji w plikach graficznych SDR, które można wykorzystać w połączeniu z techniką wyświetlania, aby uzyskać optymalne odtworzenia HDR.

Aby było to praktycznie możliwe, format pliku musi:

  • Dbaj o zgodność wsteczną, aby w przypadku naiwnych widzów wyświetlany był standardowy obraz SDR.
  • nie będą zajmować zbyt dużo miejsca,

Dodatkowo metoda wyświetlania musi:

  • dekodowanie nie wymaga intensywnego przetwarzania danych,
  • Musi mieć możliwość dostosowania do dowolnego współczynnika proporcji punktów bieli HDR i SDR wyświetlacza, które mogą znacznie się różnić na różnych urządzeniach, a nawet tymczasowo na jednym urządzeniu.

I wreszcie metoda musi być w stanie wykonać wszystkie poprzednie działania bez żadnego:

  • Klipy z najciekawszymi momentami.
  • Niszcz cienie.
  • Zmienianie lub kompresowanie kontrastu lokalnego.
  • Zmiana relacji tonalnych (między obiektami na scenie).

Zależności

Poniżej znajdują się odwołania normatywne dotyczące tej specyfikacji:

Definicje

  • Wyświetlacz SDR

    • Konwencjonalny wyświetlacz nieprzeznaczony do wyświetlania treści HDR. Nominalna maksymalna jasność wynosi zwykle około 400 cd/m2.
  • Wyświetlacz HDR

    • Wyświetlacz zaprojektowany do obsługi treści HDR. Szczytowa jasność ekranu jest zwykle większa niż w przypadku wyświetlaczy SDR, zwykle 800 cd/m2 i większa. Zwykle mają też lepszy kontrast niż wyświetlacze SDR.
  • Obraz główny

    • Pierwsza instancja obrazu w pliku GContainer z dołączonymi do niego dodatkowymi plikami multimedialnymi. Obraz główny zawiera metadane XMP GContainer określające kolejność i właściwości kolejnych dodatkowych plików elementów multimedialnych w kontenerze.
  • Obraz dodatkowy

    • Kolejne pliki elementów multimedialnych, które są dołączone do obrazu głównego w pliku GContainer.
  • Kompresja zakresu

    • Rzeczywiste sceny w fotografii często mają większy zakres dynamiczny niż wyświetlacz SDR. Aby zmniejszyć zakres dynamiczny obrazu, trzeba wykonać takie operacje jak kompresja zakresu, zwane też lokalnym mapowaniem tonów. Taka redukcja ma na celu uniknięcie przycięć podświetleń i zgaśnięcia cieni, przy zachowaniu jak największego kontrastu lokalnego.Próbujesz zmniejszyć rozmiar dużych krawędzi luminancji, które zwiększają ogólny kontrast, a jednocześnie starają się zachować rozmiar małych krawędzi luminancji, czyli detali.Chociaż istnieje wiele sposobów implementacji, takie działanie jest obecnie standardem w większości nowoczesnych aparatów cyfrowych.
  • Punkt bieli SDR

    • Maksymalna luminacja liniowa treści SDR na wyświetlaczu w określonym momencie.
  • Punkt bieli HDR

    • Maksymalna liniowa luminacja treści HDR na wyświetlaczu w określonym momencie. Ta wartość jest zwykle większa niż punkt bieli SDR.
  • Wzmocnienie

    • Punkt bieli HDR podzielony przez punkt bieli SDR.
  • Maksymalne ulepszenie treści (w równaniach: max_content_boost)

    • Ta wartość pozwala twórcy treści ograniczyć zakres jasności zdjęcia wyświetlanego na wyświetlaczu HDR w stosunku do jakości SDR.
    • Jest to stała wartość danego obrazu. Jeśli np. wartość wynosi 4, to w przypadku dowolnego piksela luminancja liniowa wyświetlanego odtworzenia HDR musi być maksymalnie 4-krotnie większa niż luminancja liniowa efektu SDR. W praktyce oznacza to, że jaśniejsze części sceny mogą być nawet 4 razy jaśniejsze.
    • W praktyce ta wartość jest zwykle większa niż 1, 0.
    • Zawsze większa lub równa Minimalna ulepszona ilość treści.
  • Minimalny wzrost treści (min_content_boost w równaniach)

    • Ta wartość pozwala twórcy treści ograniczyć zakres ciemniejszych obrazów wyświetlanych na wyświetlaczu HDR w odniesieniu do rozdzielczości SDR.Jest to stała wartość danego obrazu.
    • Jeśli np. wartość to 0,5, to w przypadku dowolnego piksela liniowa luminancja wyświetlanego odtworzenia HDR musi być co najmniej 0,5 x większa niż luminancja liniowa efektu SDR.
    • W praktyce ta wartość jest zwykle równa 1, 0 lub mniejsza.
    • Zawsze musi być mniejsza lub równa Maksymalne zwiększenie ilości treści.
  • Maksymalne wzmocnienie wyświetlania (w równaniach: max_display_boost)

    • Maksymalne dostępne wzmocnienie obsługiwane przez wyświetlacz w danym momencie. Ta wartość może się z czasem zmieniać w zależności od ustawień urządzenia i innych czynników, takich jak oświetlenie otoczenia czy liczba jasnych pikseli na ekranie.
    • Jeśli na przykład wartość wynosi 4,0, wyświetlacz może wyświetlać piksel, który jest maksymalnie 4 razy jaśniejszy niż punkt bieli SDR. Ta wartość zawsze wynosi >= 1,0, ponieważ wyświetlacz zawsze może świecić na biało HDR lub mieć co najmniej taką samą jasność jak SDR.
  • Wzmocnienie wyświetlacza

    • Są one równe mniejszemu bonusowi na stronie głównej i maksymalnemu wzmocnieniu liczby wyświetleń. Ta wartość zawsze wynosi >= 1,0.
    • Jeśli np. maksymalne ulepszenie treści wynosi 4,0, a wzmocnienie wyświetlacza – 3,0, wzmocnienie wyświetlacza wynosi 3,0. Piksele są nawet 3 razy jaśniejsze od SDR, ponieważ ogranicza to możliwości wyświetlacza.
    • Przykład: jeśli maks. ulepszenie treści wynosi 4,0, a wzmocnienie wyświetlacza – 5,0, wzmocnienie wyświetlacza będzie wynosić 4,0. Piksele są nawet 4 razy jaśniejsze niż w przypadku SDR, ponieważ jedynym czynnikiem, który decyduje o tym, jest intencja treści.
  • Docelowe odtworzenie HDR

    • Idealne odtworzenie HDR według twórcy treści.
  • Dostosowane odwzorowanie HDR

    • Ostateczne odtworzenie HDR widoczne na wyświetlaczu po dostosowaniu docelowego efektu HDR do bieżącego wzmocnienia wyświetlacza.
  • Pobierz mapę (recovery(x, y) w równaniach)

    • Mapa wskazująca, jak bardzo rozjaśnić każdy piksel w odtwarzaniu SDR, aby uzyskać docelowe odtworzenie HDR. Może ona być jednokanałowa lub wielokanałowa. Mapa wielokanałowa wskazuje oddzielny zysk dla każdego kanału koloru, np. czerwony, zielony i niebieski. Dokument ilustruje przykład mapy jednokanałowej.
  • clamp(x, a, b)

    • Ogranicz wartość x do zakresu [a, b].
  • exp2(x)

    • Wzmocnienie podstawy 2; 2x.
  • floor(x)

    • Zwraca najbliższą liczbę całkowitą równą x lub mniejszą od niej.
  • log2(x)

    • Logarytm podstaw 2; log2(x)
  • pow(b, x)

    • Potęganie; bx.
  • XMP

  • Format wieloobrazowy

    • Multi-Picture Format to technika opracowana przez organizację Camera and ImagingProducts Association (CIPA) służąca do przechowywania wielu obrazów w formacie JPEG w jednym pliku JPEG.
    • Więcej informacji znajdziesz w raporcie CIPA DC-x 007-2009 Multi-Picture Format.
  • Kontener G

    • GContainer to metoda przechowywania wielu obrazów w jednym kontenerze obrazów, w którym jeden obraz jest uznawany za obraz główny. Wszelkie dodatkowe obrazy są uznawane za wersje alternatywne lub pomocnicze. Metadane XMP służą do przekazywania informacji o obecności i znaczeniu dodatkowych obrazów. Więcej informacji znajdziesz w sekcji Szczegóły kontenera.

Kodowanie

W tej sekcji opisano, jak zakodować zgodny plik JPEG. Więcej informacji o formacie JPEG znajdziesz w sekcji T.81(09/92) Digital Kompresja i kodowanie obrazów o ciągłym tonie w sekcji Zależności.

Wygeneruj mapę

Potoki obrazowania z kamery zwykle przeprowadzają operację kompresji zakresu w celu kompresji danych o luminancji o wyższym zakresie dynamicznym do niższego zakresu standardowych wyświetlaczy SDDR. Mapa zysku zapewnia mechanizm przechowywania danych wystarczających do odzyskania oryginalnych danych o luminancji o wyższym zakresie dynamicznym.

W poniższych obliczeniach w tej sekcji zastosowano arytmetyczną liczbę zmiennoprzecinkową.

Te funkcje opisują obraz SDR:

  • SDR'(x, y) to trójkanałowy, nieliniowy obraz główny (zwykle zakodowany w formacie gamma).
  • SDR(x, y) to liniowa wersja 3-kanałowego obrazu głównego otrzymywana przez przekształcenie do wersji liniowej przestrzeni kolorów obrazu podstawowego. Na przykład możesz przejść z przestrzeni kolorów z funkcją transferu sRGB do liniowej przestrzeni kolorów, w której zachowane są kolory podstawowe sRGB.

Funkcja Ysdr(x, y) jest zdefiniowana w zakresie od 0,0 do 1,0 i stanowi standardową luminancję liniową obrazu głównego zakresu dynamicznego:

Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))

Podobne definicje znajdziesz w przypadku zdjęć HDR.

  • HDR'(x, y) to trójkanałowy obraz nieliniowy, czyli obraz zakodowany w formacie PQ lub HLG.
  • HDR(x, y) to 3-kanałowy liniowy obraz HDR.

Yhdr(x, y) to luminancja w danym punkcie zdjęcia HDR:

Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))

Yhdr(x, y) ma wartość z zakresu od 0,0 do maksymalnej treści.

Zdjęcia SDR i HDR muszą mieć tę samą rozdzielczość. Profil kolorów obrazu SDR definiuje przestrzeń kolorów obrazu HDR.

Jeśli na przykład zdjęcie główne SDR ma profil kolorów Display P3, to zdjęcie HDR jest definiowane względem kolorów podstawowych tego profilu. Oznacza to, że zdjęcie HDR ma też obrazy podstawowe Display P3.

Mapa wzmocnienia jest obliczana na podstawie 2 obrazów liniowych zawierających oczekiwaną luminancję obrazu HDR (Yhdr(x, y)) oraz obraz o standardowej luminancji (Ysdr(x, y)).

Funkcja pixel_gain(x, y) jest zdefiniowana jako stosunek między funkcją Yhdr(x, y) a funkcją Ysdr(x, y):

pixel_gain(x, y) = (Yhdr(x, y) + offset_hdr) / (Ysdr(x, y) + offset_sdr)

Działanie funkcji pixel_gain(x, y), w którym wartości Ysdr(x, y) i offset_sdr mają wartość 0, jest zdefiniowane z implementacji.

Na przykład implementacje mogą obsłużyć przypadki, w których Ysdr(x, y) i offset_sdr mają wartość 0 – wystarczy, że określisz pixel_gain(x, y) jako 1.0. Implementacje także pozwalają uniknąć tego scenariusza, używając wartości offset_sdr innej niż 0.

Implementacja może wybrać wartości offset_sdr i offset_hdr.

Mapa zysku to funkcja skalarna, która koduje pixel_gain(x, y) w przestrzeni logarytmicznej w odniesieniu do maksymalnego i minimalnego zwiększenia ilości treści:

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)

Działanie funkcji recovery(x, y), w którym pixel_gain(x, y) ma wartość 0, jest zdefiniowane jako implementacja, ponieważ log2(0) jest nieokreślony.

map_gamma to liczba zmiennoprzecinkowa, która musi być większa od 0,0 i jest wybierana przez implementację.

Wartości maksymalnego zwiększenia ilości treści i minimalnego zwiększenia ilości treści są definiowane przez implementację i mogą być określane przez twórcę treści. Maksymalne ulepszenie treści nie może być większe niż 1,0. Minimalny ulepszenie treści musi się mieścić w zakresie (0,0, 1,0].

Wartości recovery(x, y) są ograniczone do zakresu [0,0; 1,0].

Mapa wzmocnienia jest przechowywana w obrazie dodatkowym JPEG i dlatego musi być zakodowana przy użyciu 8-bitowych, nieoznaczonych liczb całkowitych, które mieszczą się w zakresie [0–255]. Każda wartość reprezentuje wartość recovery(x, y) i jest przechowywana w jednym pikselu obrazu dodatkowego.

W przypadku 8-bitowej pamięci całkowitej bez znaku zakodowana wartość jest zdefiniowana w następujący sposób:

encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)

Funkcja kodowania jest obliczana w postaci liczby zmiennoprzecinkowej i na końcu jest konwertowana na 8-bitową nieoznaczoną liczbę całkowitą przez zaokrąglenie zgodnie ze wskazaniem.

Wynikiem tego kodowania jest 8-bitowa reprezentacja wartości recovery(x, y) w postaci liczby całkowitej bez znaku, od 0,0 do 1,0. Zakodowana mapa wzmocnienia musi być zapisana w dodatkowym elemencie obrazu jako plik JPEG. Implementacja określa ilość kompresji używanej podczas kodowania JPEG.

Po zapisaniu mapy wzmocnienia w obrazie dodatkowym jest ona dołączana do obrazu podstawowego z metadanymi MPF i GContainer XMP. Katalog GContainer obrazów głównych musi zawierać element obrazu mapy dodatkowej.

Rozdzielczość zapisanej mapy wzmocnienia jest zdefiniowana w implementacji i może się różnić od rozdzielczości obrazu głównego. Jeśli mapa wzmocnienia jest przeskalowana do innej rozdzielczości niż obraz główny do przechowywania danych, metoda próbkowania musi być dwuliniowa lub lepsza i zdefiniowana.

Orientacja mapy wzmocnienia musi odpowiadać orientacji obrazu głównego. Jeśli występują, żadne metadane orientacji w zapisanym obrazie mapy wzmocnienia, np. w formacie EXIF, nie są używane.

Jeśli jest dostępny, profil kolorów mapy wzmocnienia nie jest używany.

Pobierz kontener mapy

Profil kolorów

Profil kolorów zdjęcia musi być określony za pomocą profilu ICC dla zdjęcia głównego.

Atrybuty XMP

Obraz główny zawiera metadane XMP pozwalające zdefiniować co najmniej 2 obrazy z dodatkowymi informacjami semantycznymi na potrzeby formatu mapy wzmocnienia HDR.

Poniższe podsekcje zawierają szczegółowe informacje o tym formacie. Dodatkowe informacje na temat ogólnej zgodności z GContainer są podane w sekcji Szczegóły kontenera.

Wartości atrybutów opisane w tabelach poniżej są przechowywane jako proste wartości XMP określonych podstawowych typów wartości XMP.

Wartości semantyczne elementu

Właściwość Item:Semantic określa znaczenie każdego elementu multimedialnego w katalogu kontenerów specyficznych dla aplikacji.

Wartość Opis
Główny Wskazuje, że element multimedialny jest obrazem głównym, gotowym do wyświetlenia w kontenerze. Katalog musi zawierać 1 element „Primary”.
Zyskaj mapę Wskazuje, że element multimedialny jest mapą zysków. Katalog może zawierać maksymalnie 1 element „GainMap”.

Metadane mapy w HDR Zysk

Metadane mapy zawierają informacje o tym, jak interpretować i stosować mapę wzmocnienia, aby uzyskać reprezentację HDR obrazu głównego.

Identyfikator URI przestrzeni nazw XMP dla rozszerzenia XMP metadanych mapy wzmocnienia to http://ns.adobe.com/hdr-gain-map/1.0/. Domyślny prefiks przestrzeni nazw to hdrgm.

Te metadane są przechowywane w pakiecie XMP obrazu mapy wzmocnienia i w pliku rdf:Description obrazu mapy wzmocnienia muszą znajdować się te właściwości:

Nazwa Typ Opis
hdrgm:Wersja Tekst Wersja formatu mapy wzmocnienia, która jest używana. Ta wersja to „1.0”. Required.
hdrgm:BaseRenditionIsHDR Wartość logiczna Wskazuje zakres dynamiczny obrazu głównego. Wartość „False” oznacza, że obraz główny jest w formacie SDR, a mapę wzmocnienia można z nią połączyć, aby uzyskać odtworzenie HDR. „True” oznacza, że zdjęcie główne jest w trybie HDR i można z nim połączyć mapę wzmocnienia, by uzyskać odtworzenie SDR. Musi mieć wartość „False”. Opcjonalny. Wartością domyślną jest „False”.
hdrgm:Zyskaj MapęMin Tablica rzeczywista lub uporządkowana Zapisuje wartości map_min_log2. Jest to log2 minimalna jakość treści, czyli minimalny dozwolony współczynnik luminancji liniowej docelowego odtworzenia HDR w stosunku do (dzielonego przez) obrazu SDR w przypadku danego piksela. Może być pojedynczą tablicą rzeczywistą lub uporządkowaną tablicą obiektów Reals. Uporządkowana tablica wartości rzeczywistych może zawierać 1 element, który odnosi się do wszystkich kanałów lub 3 elementy dla kanału czerwonego, zielonego i niebieskiego. Wartość nie może być większa niż hdrgm:GainMapMax. Opcjonalny; wartość domyślna to 0,0.
hdrgm:GainMapMax Tablica rzeczywista lub uporządkowana Zapisuje wartości map_max_log2. To log2 maksymalnego wzmocnienia treści, czyli maksymalny dozwolony współczynnik luminancji liniowej docelowego odtworzenia HDR w odniesieniu do (dzielonego przez) obrazu SDR w przypadku danego piksela. Może być pojedynczą tablicą rzeczywistą lub uporządkowaną tablicą obiektów Reals. Uporządkowana tablica wartości rzeczywistych może zawierać 1 element, który odnosi się do wszystkich kanałów lub 3 elementy dla kanału czerwonego, zielonego i niebieskiego. Wartość nie może być mniejsza niż hdrgm:GainMapMin. Wymagany.
hdrgm:Gamma Tablica rzeczywista lub uporządkowana Zapisuje wartości map_gamma. Jest to wartość gamma stosowana do zapisanych wartości mapy. Może być pojedynczą tablicą rzeczywistą lub uporządkowaną tablicą obiektów Reals. Uporządkowana tablica wartości rzeczywistych może zawierać 1 element, który odnosi się do wszystkich kanałów lub 3 elementy dla kanału czerwonego, zielonego i niebieskiego. Wartość musi być większa niż 0,0. Opcjonalny; wartość domyślna to 1,0.
hdrgm:OffsetSDR Tablica rzeczywista lub uporządkowana Zapisuje wartości offset_sdr. Jest to przesunięcie stosowane do wartości pikseli SDR podczas generowania mapy wzmocnienia i stosowania. Może być pojedynczą tablicą rzeczywistą lub uporządkowaną tablicą liczb rzeczywistych. Uporządkowana tablica wartości Reals może zawierać 1 element, który odnosi się do wszystkich kanałów lub 3 elementy dla kanału czerwonego, zielonego i niebieskiego. Wartość musi wynosić co najmniej 0,0. Opcjonalny; wartość domyślna to 0,015625 (1/64).
hdrgm:OffsetHDR Tablica rzeczywista lub uporządkowana Zapisuje wartości offset_hdr. Jest to przesunięcie, które ma być zastosowane do wartości pikseli HDR podczas generowania mapy i stosowania. Może być pojedynczą tablicą rzeczywistą lub uporządkowaną tablicą liczb rzeczywistych. Uporządkowana tablica wartości Reals może zawierać 1 element, który odnosi się do wszystkich kanałów lub 3 elementy dla kanału czerwonego, zielonego i niebieskiego. Wartość musi wynosić co najmniej 0,0. Opcjonalny; wartość domyślna to 0,015625 (1/64).
hdrgm:HDRCapacityMin Prawdziwa Zapisuje wartość hdr_capacity_min. To log2 minimalnej wartości wzmocnienia wyświetlania, do której w ogóle ma zastosowanie mapa. Ta wartość wpływa też na to, jak bardzo zastosować mapę wzmocnienia w zależności od wzmocnienia wyświetlania. Wartość musi wynosić co najmniej 0,0. Opcjonalny; wartość domyślna to 0,0.
hdrgm:HDRCapacityMax Prawdziwa Zapisuje wartość hdr_capacity_max. To log2 maksymalnej wartości wzmocnienia wyświetlania, do której zastosowano mapę w całości. Ta wartość wpływa też na to, jak bardzo zastosować mapę wzmocnienia w zależności od wzmocnienia wyświetlania. Wartość musi być większa niż hdrgm:HDRCapacityMin. Wymagany.

Przykładowa mapa zysku XMP

Poniższy przykład prawidłowego pakietu XMP mapy wzmocnienia zawiera metadane pobrane z przykładowego pliku pokazanego w sekcji Wprowadzenie.

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

Pamięć MPF mapy wzmocnienia

Obraz mapy wzmocnienia musi być przechowywany jako dodatkowy obraz zgodnie z definicją w dokumencie CIPA DC-x 007-2009 Multi-Picture Format, jak podano w sekcji Zależności.

Dekodowanie

W tej sekcji opisano, jak zdekodować mapę wzmocnienia z zgodnego pliku JPEG.

Sygnał formatu

Plik JPEG zgodny z tym formatem może oznaczać obecność hdrgm:Version="1.0" w pakiecie XMP obrazu głównego, gdzie hdrgm to identyfikator URI przestrzeni nazw http://ns.adobe.com/hdr-gain-map/1.0/.

Znajdź obraz mapy wzmocnienia

Więcej informacji o analizowaniu i dekodowaniu obrazu znajdziesz w sekcji Szczegółowe informacje o GContainer. Element semantyczny „GainMap” w ramach XMP rdf:Directory służy do sygnalizowania lokalizacji obrazu mapy wzmocnienia. Do określenia lokalizacji mapy wzmocnienia używany jest też IFD indeksu MPF i XMP obrazu skanowania.

Obsługa nieprawidłowych metadanych

Metadane są uznawane za nieprawidłowe, jeśli brakuje wymaganego pola lub zawiera ono pole z nieprawidłową wartością. Wartość może być nieprawidłowa, ponieważ nie można jej przeanalizować pod kątem podanego typu lub wykracza poza oczekiwany zakres.

W przypadku wykrycia nieprawidłowych metadanych należy zignorować mapę wzmocnienia i wyświetlić obraz SDR.

Wyświetlacz

Pliki zakodowane w formacie mapy wzmocnienia HDR mogą być renderowane na konwencjonalnych wyświetlaczach SDR lub na wyświetlaczach HDR o większej luminancji.

użyć mapy wzmocnienia, aby utworzyć dostosowane odwzorowanie HDR;

W poniższych obliczeniach w tej sekcji założono użycie arytmetyki zmiennoprzecinkowej.

encoded_recovery(x, y) to jednokanałowa, 8-bitowa, nieoznaczona liczba całkowita z obrazu mapy wzmocnienia.

Jeśli mapa wzmocnienia ma inną rozdzielczość niż obraz główny, parametr encoded_recovery(x, y) jest określany na podstawie odfiltrowanej próbki obrazu mapy wzmocnienia w przypadku wymiarów x i y w zakresie szerokości i wysokości obrazu głównego. Metoda filtrowania musi być dwukierunkowa lub lepsza i musi być zdefiniowana.

Wartość map_gamma jest określana przez pole metadanych hdrgm:Gamma.

log_recovery(x, y) to znormalizowane wzmocnienie piksela zmiennoprzecinkowego w przestrzeni logarytmicznej:

recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)

Maksymalne wzmocnienie wyświetlacza to skalarna wartość zmiennoprzecinkowa zdefiniowana jako stosunek między bieżącym punktem bieli HDR a bieżącym punktem bieli SDR. Ta wartość jest dostarczana przez system wyświetlania i z czasem może się zmieniać.

Wartość hdr_capacity_max jest określana przez pole metadanych hdrgm:HDRCapacityMax. Wartość hdr_capacity_min jest określana przez pole metadanych hdrgm:HDRCapacityMin.

Gdy parametr hdrgm:BaseRenditionIsHDR ma wartość „False”, parametr weight_factor jest określany w ten sposób:

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)

Gdy hdrgm:BaseRenditionIsHDR ma wartość „Prawda”, drugie równanie ma postać:

weight_factor = 1.0 - clamp(unclamped_weight_factor, 0.0, 1.0)

Wartość gain_map_max jest określana przez pole metadanych hdrgm:GainMapMax. Wartość gain_map_min jest określana przez pole metadanych hdrgm:GainMapMin. Wartość offset_sdr jest określana przez pole metadanych hdrgm:OffsetSDR. offset_hdr jest określany przez pole metadanych hdrgm:OffsetHDR.

Liniowe odwzorowanie HDR można obliczyć w ten sposób:

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

W razie potrzeby implementacja może zastosować przekształcenie do parametru HDR(x, y), aby umieścić dane w odpowiednim miejscu na ekranie. Wszystkie takie przekształcenia muszą być kolorymetrycznie poprawne.

Szczegóły kontenera GContainer

W tej sekcji znajdują się dodatkowe wymagania, tak aby format był zgodny z metadanymi XML GContainer. Metadane są zserializowane zgodnie ze specyfikacją XMP w formacie ISO 166841:2011(E) XMP i umieszczone w głównym pliku obrazu zgodnie ze specyfikacją Adobe XMP Specification, część 3 Przechowywanie w plikach w plikach. Główny plik obrazu zawiera następujące elementy w formacie RDF/XML.

Wymagania dotyczące pakietów XMP

Pakiet XMP powinien zawierać rozszerzenie XMP metadanych mapy wzmocnienia za pomocą identyfikatora URI przestrzeni nazw http://ns.adobe.com/hdr-gain-map/1.0/. Domyślny prefiks przestrzeni nazw to hdrgm.

Pakiet XMP zdefiniuje hdrgm:Version="1.0".

Element kontenera

Przestrzeń nazw XMP rozszerzenia GContainer XMP to http://ns.google.com/photos/1.0/container/. Domyślny prefiks przestrzeni nazw to Container.

Obraz główny zawiera w metadanych XMP element Container:Directory, który określa kolejność i właściwości kolejnych plików multimedialnych w kontenerze. Każdy plik w kontenerze ma w elemencie Container:Directory odpowiadający mu element multimedialny. Element multimedialny opisuje lokalizację w kontenerze plików i podstawowe właściwości każdego połączonego pliku.

Element kontenera jest kodowany w metadanych XMP obrazu głównego i określa katalog elementów multimedialnych w kontenerze. Elementy multimedialne muszą znajdować się w pliku kontenera w tej samej kolejności co elementy elementu multimedialnego w katalogu i muszą być ciasno spakowane.

Katalog może zawierać tylko jeden element obrazu o stanie „Główny” i musi on być pierwszym elementem w tym katalogu.

Nazwa elementu Typ Opis
Kontener:katalog Uporządkowany tablica struktur Uporządkowana tablica struktur, z których każdy zawiera strukturę Container:Item, która określa układ i zawartość kontenera.

Element produktu

Elementy elementu opisują sposób korzystania z poszczególnych elementów multimedialnych przez aplikację.

Identyfikator URI przestrzeni nazw XMP rozszerzenia GContainer Item XMP to http://ns.google.com/photos/1.0/container/item/. Domyślny prefiks przestrzeni nazw to Item.

Pierwszy element multimedialny musi być obrazem głównym.Musi określać wartości Item:Semantic = "Primary" i Item:Mime wymienione w sekcji Wartości typu MIME elementu.

Długość elementu obrazu podstawowego jest określana przez analizę obrazu podstawowego na podstawie jego typu MIME, począwszy od początku kontenera plików.

Elementy multimedialne mogą zawierać atrybut Item:Padding określający dodatkowe dopełnienie między końcem elementu multimedialnego a początkiem następnego elementu multimedialnego. Jeśli występuje w ostatnim elemencie multimedialnym w elemencie Container:Directory, Item:Padding wskazuje dopełnienie między końcem elementu a końcem pliku.

Każdy element multimedialny musi zawierać atrybuty typu Item:Mime i Item:Semantic. Elementy multimedialne z obrazami pomocniczymi muszą zawierać atrybuty Item:Length.

Sekwencyjne elementy multimedialne mogą udostępniać dane zasobów w kontenerze plików. Pierwszy element multimedialny określa lokalizację zasobu w kontenerze plików, a kolejne udostępnione elementy multimedialne mają wartość Item:Length ustawioną na 0. Jeśli dane zasobu same są kontenerem, do określenia lokalizacji danych elementu multimedialnego w zasobie można użyć obiektu Item:URI.

Lokalizacja zasobów elementów multimedialnych w kontenerze jest określana przez zsumowanie długości kodowania obrazu podstawowego, wartości Item:Length poprzednich zasobów dodatkowych elementów multimedialnych oraz wszystkich poprzednich wartości Item:Padding. W przypadku zasobów elementów multimedialnych, które nie mają określonej wartości, wartość Item:Padding jest uznawana za 0.

Nazwa atrybutu Typ Opis
Element:Mime Tekst Prosty ciąg znaków wskazujący typ MIME elementu multimedialnego w kontenerze. Definicję znajdziesz w sekcji Wartości typu MIME elementu. Required.
Element:semantyczne Tekst Prosty ciąg znaków wskazujący znaczenie elementu multimedialnego w konkretnej aplikacji. Definicję znajdziesz w sekcji Wartości semantyczne produktów. Required.
Element:Długość Liczba całkowita Prosty ciąg znaków zawierający dodatnią liczbę całkowitą w bajtach elementu. Długość 0 oznacza, że zasób elementu multimedialnego jest współużytkowany z poprzednim elementem multimedialnym. Wymagane w przypadku dodatkowych elementów multimedialnych. Opcjonalny dla głównego elementu multimedialnego z obrazem.
Element:etykieta Tekst Ciąg znaków zdefiniowany w implementacji służący do rozróżniania wielu elementów produktu z tym samym atrybutem Item:Semantic. Atrybut opcjonalny.
Element:Dopełnienie Liczba całkowita Ciąg znaków zawierający dodatnią liczbę całkowitą (w bajtach) z dodatkowym dopełnieniem między końcem elementu multimedialnego a początkiem następnego elementu multimedialnego lub koniec pliku, jeśli został użyty w ostatnim elemencie multimedialnym w parametrze Container:Directory. Jeśli go nie ma, przyjmuje się wartość 0. Opcjonalne.
Element:URI Tekst Ciąg URI zgodny z normą ISO/IEC 14496-12 w sekcji 8.11.9, zawierający względny identyfikator URI danych multimedialnych w zasobie elementu multimedialnego. Domyślnie jest to główny zasób obrazu. Opcjonalny dla podstawowych formatów plików multimedialnych ISO/IEC 14496-12. Nie można ich używać w inny sposób.

Wartości typu MIME elementu

Atrybut Item:Mime określa typ MIME danych poszczególnych elementów multimedialnych.

Wartość Opis
obraz/jpeg Obraz JPEG.

Przykładowy plik XContainer XMP

Poniższy przykład prawidłowego pakietu XMP GContainer zawiera metadane pobrane z przykładowego pliku pokazanego w sekcji Wprowadzenie.

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