Wprowadzenie
Ten dokument określa sposób działania nowego formatu pliku, który koduje logarytmiczny obraz mapy wzmocnienia zakresu w pliku graficznym JPEG. czytelnicy starszego typu, obsługują nowy format, odczytuj i wyświetlaj konwencjonalne niskiej dynamiki. z pliku graficznego.Czytelnicy obsługujący ten format łączą się główny obraz z mapą wzmocnienia, a obraz o wysokim zakresie dynamiki po wyświetleniu zgodnych wyświetlaczy.
W pozostałej części tego dokumentu opisujemy metody stosowane w procesie korzystać z tego formatu. Ogólnie rzecz biorąc, cykl życia obrazu do tego formatu:
Kodowanie
- Generowanie map
- Zwiększ kompresję mapy
- Wygeneruj kontener mapy
Dekodowanie
Motywacja
Ten format pliku służy do zakodowania dodatkowych informacji w obrazie SDR które można stosować w połączeniu z metodą wyświetlania jak uzyskać optymalną jakość obrazu HDR w jednym pliku.
Aby było to praktyczne, format pliku musi:
- Zapewniać zgodność wsteczną, dzięki czemu zwykły obraz SDR nie jest przeznaczony dla nudnych odbiorców.
- Nie zajmują za dużo dodatkowego miejsca.
Dodatkowo metoda wyświetlania musi:
- Dekodowanie nie wymaga dużego przetwarzania.
- dostosować się do dowolnego proporcji między punktami bieli HDR i SDR wyświetlacza, które mogą znacznie się różnić w zależności od urządzenia lub nawet w konkretnym tempie. urządzenia.
Technika musi też mieć możliwość wykonania wszystkich poprzednich działań. bez przeszkód:
- Klipy z najciekawszymi momentami.
- Niszczenie cieni.
- Zmienianie lub kompresowanie lokalnego kontrastu.
- zmienianie względnych relacji tonalnych (między obiektami na scenie).
Zależności
Oto odniesienia normatywne do tej specyfikacji:
- Adobe XMP Specyfikacja, część 3. Przechowywanie plików w plikach
- ISO 16684-1:2019 XMP Specification (część 1)
- Format pliku multimedialnego ISO/IEC 14496-12
- T.81 (09/92) Kompresja cyfrowa i kodowanie zdjęć w trybie ciągłym zdjęcia
- Dokument na temat formatu wieloobrazowego CIPA DC-x 007-2009
Definicje
Wyświetlacz SDR
- Standardowy wyświetlacz nieprzeznaczony do wyświetlania treści HDR. Te Wyświetlacze zazwyczaj dają nominalną szczytową jasność około 400 cd/m2 lub mniej.
Wyświetlacz HDR
- Wyświetlacz przeznaczony do wyświetlania treści HDR. Zwykle generują one nominalna szczytowa jasność większa niż wyświetlacz SDR, zwykle 800 cd/m2 lub więcej i zwykle mają też lepszy kontrast niż w przypadku SDR.
Obraz główny
- Pierwsze wystąpienie obrazu w pliku GContainer z multimediami plików. Obraz główny zawiera metadane XMP GContainer określając kolejność i właściwości następnego dodatkowego elementu multimedialnego w kontenerze plików.
Drugi obraz
- Kolejne pliki elementów multimedialnych, które są dołączone do obrazu głównego w Plik GContainer.
Kompresja zakresu
- W przypadku fotografii rzeczywiste sceny często mają większy zakres dynamiki niż Wyświetlacz SDR może reprezentować. Operacje, takie jak kompresja zakresu, są tzw. mapowaniem tonów lokalnych, są niezbędne do zmniejszenia zakresu dynamicznego . Redukcja nie pozwala na obcinanie najciekawszych fragmentów ani miażdżenie. przy jednoczesnym zachowaniu lokalnego kontrastu.Próbujesz zmniejszają rozmiar dużych krawędzi luminancji na obrazie, co przyczynia się globalnego kontrastu, starając się zachować rozmiar lub małe krawędzie luminancji, czyli szczegóły.Chociaż na rynku jest wiele w różnych zastosowaniach, taka operacja jest standardem w większości współczesnych aparatami cyfrowymi.
Punkt bieli SDR
- Maksymalna luminancja liniowa treści SDR na wyświetlaczu przy określonym w czasie rzeczywistym.
Punkt bieli HDR
- Maksymalna luminacja liniowa treści HDR na wyświetlaczu o określonej w czasie rzeczywistym. Ta wartość jest zwykle wyższa niż punkt bieli SDR.
Wzmocnienie
- Punkt bieli HDR podzielony przez punkt bieli SDR.
Maksymalne ulepszenie treści (
max_content_boost
w równaniach)- Ta wartość pozwala twórcy treści ograniczyć jasność obrazu które można uzyskać podczas wyświetlania na wyświetlaczu HDR względem jakości SDR.
- Jest to stała wartość dotycząca konkretnego zdjęcia. Na przykład, jeśli plik wartość wynosi cztery, natomiast dla każdego piksela luminacja liniowa oddanie w technologii HDR musi być co najwyżej 4-krotnie większe od luminancji liniowej w wersji SDR. W praktyce oznacza to, że jaśniejsze elementy scena może być wyświetlana nawet 4 razy jaśniejsze.
- W praktyce ta wartość jest zwykle większa niż 1, 0.
- Wartość ta jest zawsze większa niż lub równa wartości Min. wzmocnienie treści.
Minimalne wzmocnienie treści (
min_content_boost
w równaniach)- Ta wartość pozwala twórcy treści ograniczyć ilość ciemnego obrazu obraz wyświetlany na wyświetlaczu HDR jest bardziej niż SDR wersji.Jest to stała wartość dotycząca konkretnego zdjęcia.
- Jeśli np.wartość wynosi 0,5, to dla dowolnego piksela wykres liniowy luminancja wyświetlonego odwzorowania HDR musi być (co najmniej) 0,5 raza większa luminancji linearnej dla obrazu SDR.
- W praktyce ta wartość jest zwykle równa 1, 0 lub mniejsza.
- Wartość ta jest zawsze mniejsza lub równa wartości Maksymalne wzmocnienie treści.
Maksymalne wzmocnienie wyświetlacza (
max_display_boost
w równaniach)- Maksymalne dostępne wzmocnienie obsługiwane przez wyświetlacz w danym momencie obecnie się znajdujesz. Ta wartość może się z czasem zmieniać w zależności od ustawień urządzenia i innych czynników czynników takich jak warunki otoczenia czy liczba jasnych pikseli na ekranie.
- Jeśli np.wartość to 4, 0, wyświetlacz może wyświetlać który jest maksymalnie 4 razy jaśniejszy niż SDR. punkt bieli. Ta wartość wynosi zawsze >= 1,0, ponieważ wyświetlacz zawsze może biel HDR musi być co najmniej tak jasna jak biała SDR.
Wzmocnienie wyświetlacza
- Wartość ta jest równa maksymalnej wartości maksymalnego wzmocnienia treści i maksymalnemu wzmocnieniu wyświetlania. Ten zawsze wynosi >= 1,0.
- Jeśli na przykład maksymalne wzmocnienie treści to 4,0, a wzmocnienie wyświetlacza – 3,0, to wzmocnienie wyświetlacza to 3,0. Piksele są wyświetlane nawet trzykrotnie jaśniejsze. niż SDR, ponieważ możliwości wyświetlaczy są czynnikiem ograniczającym.
- Inny przykład: jeśli maksymalne wzmocnienie treści to 4,0, a maksymalne wzmocnienie wyświetlania to 5,0, a wzmocnienie wyświetlacza – 4,0. Piksele są wyświetlane nawet 4x. jest jaśniejszy niż SDR, ponieważ czynnikiem ograniczającym są intencje filmu.
Docelowe odwzorowanie HDR
- Zdaniem twórcy idealnego efektu HDR.
Dostosowana jakość HDR
- Ostateczne ujęcie HDR widoczne na ekranie, po i dostosowuje obraz w docelowym HDR do aktualnego wzmocnienia obrazu.
Mapa wzmocnienia (
recovery(x, y)
w równaniach)- mapa pokazująca, o ile rozjaśnić każdy piksel w wersji SDR, aby uzyskać docelową wersję HDR. Ta mapa może być jednokanałowa lub wielokanałowa. Mapa wielokanałowa pokazuje osobny wzmocnienie dla każdego kanału kolorów, takich jak czerwony, zielony i niebieski. Ten dokument pokazuje, w przypadku mapy jednokanałowej.
clamp(x, a, b)
- Umieść wartość x w zakresie [a, b].
exp2(x)
- potęgowanie przy podstawie 2; 2x.
floor(x)
- Zwraca najbliższą liczbę całkowitą równą x lub mniejszą.
log2(x)
- Logarytm o podstawie 2; log2(x)
pow(b, x)
- Wygaśnięcie; Bx.
XMP,
- Rozszerzalna platforma metadanych. Standard definiujący metodę kodowanie metadanych w kontenerze obrazu; zdefiniowane przez ISO 16684-1:2011(E) Specyfikacja XMP, część 1.
Format z wieloma obrazami
- Format Multi-Picture Format to technika opracowana przez zespoły Camera and Imaging Stowarzyszenie Produktów (CIPA) służące do przechowywania wielu obrazów w formacie JPEG pojedynczy plik JPEG.
- Więcej informacji znajdziesz w związku z tym raportem: Raport dotyczący CIPA Format wielu obrazów DC-x 007-2009.
kontener
- GContainer to metoda przechowywania wielu obrazów na jednym obrazie w którym jeden obraz jest uważany za obraz główny. Dowolne są uznawane za wersje alternatywne lub pomocnicze. Metadane XMP służą do informowania o obecności i znaczeniu dodatkowe zdjęcia. Aby uzyskać więcej informacji, zapoznaj się z narzędziem GContainer szczegóły.
Kodowanie
Ta sekcja zawiera informacje na temat kodowania zgodnego pliku JPEG. Patrz T.81 (09/92) Kompresja cyfrowa i kodowanie ciągłego tonu images, w sekcji Zależności znajdziesz więcej informacji. o formacie JPEG.
Generowanie map
Potoki umożliwiające obrazowanie z kamery zwykle wykonują operację kompresji zakresu, aby kompresuj dane o wyższym zakresie luminancji do niższego zakresu SDR. Mapa zysku to mechanizm przechowywania danych, pozwala odzyskać oryginalne dane o luminancji o wyższym zakresie dynamiki.
W poniższych obliczeniach w tej sekcji zakładamy, że jest to arytmetyka zmiennoprzecinkowa.
Te funkcje opisują obraz SDR:
SDR'(x, y)
to 3-kanałowy, nieliniowy (zwykle zakodowany gamma) główny obraz.SDR(x, y)
to liniowa wersja 3-kanałowego obrazu głównego, uzyskane przez przekształcenie do liniowej wersji podstawowego koloru zdjęcia kosmosu. Na przykład z przestrzeni kolorów z funkcją przenoszenia sRGB do liniowa przestrzeń kolorów, która zachowuje kolory podstawowe sRGB.
Funkcja Ysdr(x, y)
jest zdefiniowana w zakresie od 0,0 do 1,0 i jest
luminancja liniowa obrazu podstawowego w standardowym zakresie dynamicznym:
Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))
Podobne definicje istnieją dla obrazu HDR.
HDR'(x, y)
to 3-kanałowa nieliniowa, czyli zakodowana w formacie PQ lub HLG .HDR(x, y)
to trzykanałowy liniowy obraz HDR.
Yhdr(x, y)
to luminancja w danym punkcie obrazu HDR:
Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))
Pole Yhdr(x, y)
jest zdefiniowane w zakresie od 0,0 do maksymalnego zwiększenia ilości treści.
Obrazy SDR i HDR muszą mieć tę samą rozdzielczość. Profil kolorów SDR określa przestrzeń kolorów obrazu HDR.
Jeśli na przykład obraz główny SDR ma profil kolorów Display-P3, obraz HDR jest określany na podstawie kolorów podstawowych tego profilu. Ten oznacza, że zdjęcie HDR ma też kolory podstawowe Display-P3.
Mapa wzmocnienia jest obliczana na podstawie 2 obrazów liniowych zawierających żądany obraz HDR
luminancja i Yhdr(x, y)
oraz obraz o luminancji standardowego zakresu (Ysdr(x, y)
).
Funkcja pixel_gain(x, y)
jest zdefiniowana jako stosunek między Yhdr(x, y)
i funkcji 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 Ysdr(x, y)
i offset_sdr
są
zarówno wartość 0, jak i 0 jest zdefiniowana przez implementację.
Implementacje mogą na przykład obsługiwać przypadek, w którym Ysdr(x, y)
i
Parametr offset_sdr
ma wartość 0, ponieważ pixel_gain(x, y)
ma wartość 1,0. Ewentualnie
implementacje pozwalają też uniknąć tego scenariusza przez stosowanie wartości offset_sdr
innej niż 0.
Implementacja może wybrać wartości offset_sdr
i offset_hdr
.
Mapa wzmocnienia to funkcja skalarna, która koduje pixel_gain(x, y)
w
przestrzeń logarytmiczna w odniesieniu do maksymalnego zwiększenia liczby treści 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, to
zdefiniowano implementację, ponieważ zasada log2(0)
jest niezdefiniowana.
map_gamma
to liczba zmiennoprzecinkowa, która musi być większa niż 0,0 i jest
wybrane przez implementację.
Wartości maksymalnego wzmocnienia treści i min. wzmocnienia treści to: jest brane pod uwagę w przypadku danego wdrożenia i może decydować twórca treści. Maksymalne wzmocnienie treści nie może być mniejsze niż 1,0. Minimalne wzmocnienie treści musi być włączone mieści się w zakresie (0,0, 1,0].
Wartości w polu recovery(x, y)
mogą się mieścić w zakresie [0,0, 1,0].
Mapa wzmocnienia jest zapisana jako obraz dodatkowy JPEG i dlatego musi być zakodowany
przy użyciu 8-bitowych, bez znaku całkowitych wartości liczbowych, więc mieszczą się w zakresie [0–255]. Każda wartość
reprezentuje wartość recovery(x, y)
i jest zapisywany w jednym pikselu drugorzędnej
.
W przypadku 8-bitowej pamięci całkowitej z nieoznaczonym znakiem zakodowana wartość jest zdefiniowana jako :
encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)
Obliczanie funkcji kodowania odbywa się w postaci zmiennoprzecinkowej i jest konwertowane na koniec 8-bitowej liczby całkowitej bez znaku, zaokrąglając zgodnie ze wskazówkami.
W ten sposób powstaje 8-bitowa reprezentacja liczb całkowitych bez znaku
recovery(x, y)
wartości z zakresu od 0,0 do 1,0. Zakodowana mapa wzmocnienia musi być przechowywana w
dodatkowego elementu graficznego w formacie JPEG. Implementacja wybiera ilość
kompresję używaną podczas kodowania JPEG.
Po zapisaniu mapy wzmocnienia w obrazie dodatkowym jest ona dołączana do obrazu podstawowego z metadanymi MPF i GContainer XMP. Obraz główny GContainer katalog musi zawierać element obrazu mapy wzmocnienia.
Rozdzielczość zapisanej mapy wzmocnienia jest zdefiniowana przez implementację niż rozdzielczość zdjęcia głównego. W przypadku, gdy zysk Mapa jest skalowana do innej rozdzielczości niż zdjęcie główne, musi być dwuliniowa lub lepsza i musi być zdefiniowana przez implementację.
Orientacja mapy wzmocnienia musi być zgodna z orientacją zdjęcia głównego. Jeśli wszystkie metadane orientacji w zapisanym obrazie mapy wzmocnienia, jak w przypadku formatu EXIF, nie jest używany.
Jeśli jest dostępny, profil kolorów mapy wzmocnienia nie jest używany.
Kontener mapy
Profil kolorów
Profil kolorów zdjęcia musi być wskazany za pomocą profilu ICC dla główny obraz.
Atrybuty XMP
Obraz główny zawiera metadane XMP, które definiują co najmniej 2 obrazy z dodatkowymi z informacjami semantycznymi dla formatu mapy wzmocnienia wzmocnienia HDR.
Szczegółowe informacje o tym formacie znajdziesz w podsekcjach poniżej. Dodatkowe informacje informacje o ogólnej zgodności z kontenerem GContainer są określone w Szczegóły kontenera GContainer.
Wartości atrybutów opisane w poniższych tabelach są przechowywane jako proste XMP wartości podstawowych typów wartości XMP.
Wartości semantyczne elementu
Właściwość Item:Semantic
określa znaczenie specyficzne dla aplikacji
każdego elementu multimedialnego w katalogu kontenera.
Wartość | Opis |
---|---|
Główny | Wskazuje, że element multimedialny jest obrazem głównym, gotowym do wyświetlenia. w kontenerze. Katalog musi zawierać jeden element „Primary” elementu. |
Mapa zysku | Wskazuje, że element multimedialny to mapa zysku. Katalog może zawierać maksymalnie 1 wartość „GainMap” elementu. |
Metadane mapy z wzmocnieniem HDR
Metadane mapy Wzbogacenie kodują informacje o tym, jak interpretować i stosować wzmocnienie mapy, aby uzyskać reprezentację HDR głównego zdjęcia.
Identyfikator URI przestrzeni nazw XMP dla rozszerzenia XMP metadanych mapy zysku 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 oraz
właściwości muszą występować w elemencie rdf:Description
obrazu mapy wzmocnienia XMP:
Nazwa | Typ | Opis |
---|---|---|
hdrgm:Wersja | Tekst | Używana wersja formatu mapy wzmocnienia wzmocnienia. To jest wersja „1.0”. Required. |
hdrgm:RenditionIsHDR | Wartość logiczna | Wskazuje zakres dynamiczny obrazu głównego. „Fałsz” wskazuje Głównym obrazem jest SDR, a mapę wzmocnienia można połączyć z nim, aby uzyskać Odwzorowanie HDR. „Prawda” wskazuje, że główne zdjęcie to HDR, a mapa wzmocnienia można połączyć z nią w celu wygenerowania wersji SDR. Musi mieć wartość „False”. Opcjonalnie; domyślna wartość to „False”. |
hdrgm:GainMapMin | Rzeczywista lub uporządkowana tablica wartości rzeczywistych | Zapisuje wartości zmiennej map_min_log2 . To jest
log2 minimalnego zwiększenia ilości treści, czyli minimalny dozwolony współczynnik
luminancji liniowej docelowej wartości HDR względem (podzielonej wartości
od) obrazu SDR z określonym pikselem. Może to być pojedynczy element Real lub
uporządkowanej tablicy wartości rzeczywistych. Uporządkowana tablica wartości rzeczywistych może zawierać jeden
dotyczy wszystkich kanałów lub trzech elementów dla koloru czerwonego, zielonego
Kanały niebieskie. Wartość nie może być większa niż
hdrgm:GainMapMax Opcjonalnie; domyślna wartość to 0,0. |
hdrgm:GainMapMax | Rzeczywista lub uporządkowana tablica wartości rzeczywistych | Zapisuje wartości zmiennej map_max_log2 . To jest
log2 maksymalnego dozwolonego współczynnika treści, czyli maksymalnego dozwolonego współczynnika
luminancji liniowej dla odzwierciedlenia celu HDR względem (podzielonej wartości
od) obrazu SDR z określonym pikselem. Może to być pojedynczy element Real lub
uporządkowanej tablicy wartości rzeczywistych. Uporządkowana tablica wartości rzeczywistych może zawierać jeden
dotyczy wszystkich kanałów lub trzech elementów dla koloru czerwonego, zielonego
Kanały niebieskie. Wartość nie może być mniejsza niż
hdrgm:GainMapMin Wymagany. |
hdrgm:gamma | Rzeczywista lub uporządkowana tablica wartości rzeczywistych | Zapisuje wartości zmiennej map_gamma . Jest to wartość gamma
zostaną zastosowane do zapisanych wartości mapy. Może to być pojedynczy obiekt rzeczywisty lub uporządkowany tablica
Prawda. Uporządkowana tablica wartości rzeczywistych może zawierać jeden element, który ma zastosowanie
do wszystkich kanałów lub trzy elementy dla kanałów czerwonego, zielonego i niebieskiego
. Wartość musi być większa niż 0,0. Opcjonalnie; Wartość domyślna to
1.0. |
hdrgm:OffsetSDR | Rzeczywista lub uporządkowana tablica wartości rzeczywistych | Zapisuje wartości zmiennej offset_sdr . Jest to przesunięcie
mają zastosowanie do wartości pikseli SDR podczas generowania i stosowania mapy wzmocnienia.
Może to być pojedyncza tablica wartości rzeczywistych lub uporządkowana tablica wartości rzeczywistych. Gdy uporządkowana tablica
może zawierać jeden element, który dotyczy wszystkich kanałów lub trzech elementów.
odpowiednio czerwony, zielony i niebieski. Wartość musi być równa 0,0 lub większa.
Opcjonalnie; domyślna wartość to 0,015625 (1/64). |
hdrgm:offset (HDR) | Rzeczywista lub uporządkowana tablica wartości rzeczywistych | Zapisuje wartości zmiennej offset_hdr . Jest to przesunięcie
zastosować do wartości pikseli HDR podczas generowania mapy wzmocnienia i jej stosowania.
Może to być pojedyncza tablica wartości rzeczywistych lub uporządkowana tablica wartości rzeczywistych. Gdy uporządkowana tablica
może zawierać jeden element, który dotyczy wszystkich kanałów lub trzech elementów.
odpowiednio czerwony, zielony i niebieski. Wartość musi być równa 0,0 lub większa.
Opcjonalnie; domyślna wartość to 0,015625 (1/64). |
hdrgm:HDRCapacityMin | Prawdziwe | Zapisuje wartość parametru hdr_capacity_min . To jest
log2 minimalnej wartości wzmocnienia wyświetlania, której dotyczy mapa
w ogóle nie zastosowano. Ta wartość wpływa również na stopień zastosowania mapy zysku
funkcji wzmocnienia wyświetlacza. Wartość musi być równa 0,0 lub większa. Opcjonalnie; domyślna
wynosi 0,0. |
hdrgm:HDRCapacityMax | Prawdziwe | Zapisuje wartość parametru hdr_capacity_max . To jest
log2 maksymalnej wartości wzmocnienia wyświetlania, której dotyczy mapa
w całości zastosowano. Ta wartość wpływa też na stopień zastosowania mapy wzmocnienia
na podstawie wzmocnienia sygnału. Musi być większe niż
hdrgm:HDRCapacityMin Wymagany. |
Przykładowa mapa zysku XMP
Poniższy przykład prawidłowego pakietu XMP z mapą wzmocnienia zawiera pobrane metadane 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>
Przechowywanie MPF mapy wzmocnienia
Obraz mapy wzmocnienia musi być zapisany jako obraz dodatkowy zgodnie z definicją w CIPA DC-x 007-2009 Multi-Picture Format, jak określono w Zależności.
Dekoduj
W tej sekcji opisano sposób zdekodowania mapy wzmocnienia z zgodnego pliku JPEG.
Sygnał formatu
Plik JPEG zgodny z tym formatem może zostać rozpoznany na podstawie obecności
hdrgm:Version="1.0"
w pakiecie XMP obrazu podstawowego, gdzie hdrgm
to wartość
Identyfikator URI przestrzeni nazw http://ns.adobe.com/hdr-gain-map/1.0/
.
Zlokalizuj obraz mapy wzmocnienia
Szczegółowe informacje o analizowaniu i dekodowaniu obrazu znajdziesz w sekcji GContainer
szczegóły. A „GainMap” semantyczny element w XMP
rdf:Directory
jest używany do sygnalizowania lokalizacji obrazu mapy wzmocnienia.
Można również użyć IFD indeksu MPF i skanowania obrazów XMP jest używany do określania
lokalizację mapy zysku.
Obsługa nieprawidłowych metadanych
Metadane są uznawane za nieprawidłowe, jeśli brakuje wymaganego pola lub jeśli takie pole występuje pole zawiera nieprawidłową wartość. Wartość może być nieprawidłowa, ponieważ nie jest można przeanalizować do określonego typu lub dlatego, że wykracza poza oczekiwany zakres.
W przypadku wykrycia nieprawidłowych metadanych należy zignorować mapę wzmocnienia i przesłać SDR. obrazu.
Wyświetlacz
Pliki zakodowane w formacie mapy wzmocnienia wzmocnienia HDR mogą być renderowane na konwencjonalnych wyświetlaczy SDR lub wyświetlaczach HDR o większej luminancji. dane wyjściowe.
Użyj mapy wzmocnienia, aby utworzyć dostosowane odwzorowanie HDR
W poniższych obliczeniach w tej sekcji przyjęto arytmetykę zmiennoprzecinkową.
encoded_recovery(x, y)
to jednokanałowa, 8-bitowa, nieoznaczona wartość całkowita
z obrazu mapy wzmocnienia.
Jeśli mapa wzmocnienia ma inną rozdzielczość niż zdjęcie główne,
Wartość encoded_recovery(x, y)
jest określana na podstawie filtrowanej próbki danych
uzyskać obraz mapy dla wartości x i y w zakresie szerokości i wysokości głównego obrazu,
. Metoda filtrowania musi być dwuliniowa lub lepsza i musi być
implementacji.
Wartość map_gamma
jest określana przez pole metadanych hdrgm:Gamma
.
log_recovery(x, y)
to znormalizowane wzmocnienie piksela zmiennoprzecinkowego w
przestrzeń logarytmiczna:
recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)
Maksymalne wzmocnienie wyświetlania to skalarna wartość zmiennoprzecinkowa zdefiniowana jako stosunek między aktualnego punktu bieli HDR podzielona przez bieżący punkt bieli SDR. Ten jest dostarczana przez system wyświetlania i może się zmieniać z czasem.
Wartość hdr_capacity_max
jest określana przez pole metadanych hdrgm:HDRCapacityMax
.
Wartość hdr_capacity_min
jest określana przez pole metadanych hdrgm:HDRCapacityMin
.
Pole weight_factor
jest określane w następujący sposób, gdy hdrgm:BaseRenditionIsHDR
jest
„Fałsz”:
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”, zamiast tego 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
zależy od pola metadanych hdrgm:OffsetHDR
.
Zaadaptowane liniowo przekształcenie 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ć do HDR(x, y)
przekształcenie, aby umieścić
w miejscu oczekiwanym przez wyświetlacz. Wszelkie takie przekształcenia muszą być
poprawna kolorowo.
Szczegóły kontenera GContainer
W tej sekcji określono dodatkowe wymagania, dzięki którym ten format będzie zgodny za pomocą metadanych XML w GContainer. Metadane są zserializowane zgodnie z normą ISO 166841:2011(E) XMP Specification Part 1 (Specyfikacja XMP) wewnątrz głównego pliku graficznego zgodnie z opisem w części 3 specyfikacji Adobe XMP Miejsce na dane w Plikach. Główny plik obrazu zawiera tych elementów w formacie RDF/XML.
Wymagania dotyczące pakietów XMP
Pakiet XMP powinien zawierać rozszerzenie XMP metadanych mapy wzmocnienia poprzez tag
identyfikator URI przestrzeni nazw http://ns.adobe.com/hdr-gain-map/1.0/
. Domyślna przestrzeń nazw
prefiks to hdrgm
.
Pakiet XMP powinien zdefiniować element 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 element Container:Directory
w metadanych XMP
określając kolejność i właściwości kolejnego pliku multimedialnego w pliku.
kontenera. Każdy plik w kontenerze ma swój element multimedialny w
Container:Directory
Element multimedialny opisuje lokalizację w pliku.
kontenera i podstawowych właściwości każdego dołączonego pliku.
Element kontenera jest kodowany w metadanych XMP obrazu głównego i definiuje katalog elementów multimedialnych w kontenerze. Elementy multimedialne muszą znajdować się w pliku kontenera w tej samej kolejności co elementy elementu multimedialnego w i musi być ciasno zapakowany.
Katalog może zawierać tylko jedną kategorię „Główny” elementu graficznego i musi on być pierwszy elementu w katalogu.
Nazwa elementu | Typ | Opis |
---|---|---|
Kontener:katalog | Uporządkowana tablica struktur | Uporządkowana tablica elementów struct, z których każda zawiera element Container:Item
struct definiującego układ i zawartość kontenera. |
Element elementu
Elementy elementu opisują sposób, w jaki każdy element multimedialny jest używany przez aplikację.
Identyfikator URI przestrzeni nazw XMP dla rozszerzenia XMP elementu GContainer to
http://ns.google.com/photos/1.0/container/item/
Domyślny prefiks przestrzeni nazw
jest Item
.
Pierwszy element multimedialny musi być obrazem głównym.Musi zawierać Item:Semantic
= "Primary"
oraz Item:Mime
wymienione w
Wartości typów MIME elementów.
Długość głównego elementu ze zdjęciem jest określana na podstawie analizy obrazu podstawowego zgodnie z jej typem MIME, zaczynając od początku kontenera pliku.
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
elementu. Gdy ten element znajduje się przy ostatnim elemencie multimedialnym w tabeli Container:Directory
,
Item:Padding
oznacza dopełnienie między końcem elementu a końcem elementu
.
Każdy element multimedialny musi zawierać typ Item:Mime
i atrybuty Item:Semantic
.
Elementy multimedialne z obrazami dodatkowymi 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 pliku,
a kolejne udostępnione elementy multimedialne mają Item:Length
na 0. W przypadku, gdy
dane zasobów same w sobie są kontenerem, funkcja Item:URI
może zostać użyta do określenia
lokalizacja danych elementu multimedialnego w zasobie.
Lokalizacja zasobów elementu multimedialnego w kontenerze jest określana przez zsumowanie
długość kodowania obrazu głównego, wartości Item:Length
pary klucz-wartość
poprzedzające dodatkowe zasoby elementów multimedialnych i wszystkie poprzedzające zasoby Item:Padding
. Wartość Item:Padding
jest uznawana za 0 w przypadku zasobów elementów multimedialnych, które nie
określ jego wartość.
Nazwa atrybutu | Typ | Opis |
---|---|---|
Element:Mim | Tekst | Prosty ciąg znaków wskazujący typ MIME elementu multimedialnego w kontenera. Definicję znajdziesz w sekcji Wartości typów MIME elementów. Required. |
Element:semantyczny | Tekst | Prosty ciąg znaków wskazujący znaczenie mediów specyficzne dla aplikacji elementu. Definicję znajdziesz w sekcji Wartości semantyczne elementó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 udostępniany poprzednim element multimedialny. Wymagany w przypadku dodatkowych elementów multimedialnych. Opcjonalny dla instancji głównej graficzny element multimedialny. |
Element:Etykieta | Tekst | Ciąg zdefiniowany przez implementację służący do rozróżniania wielu elementów
elementy z tym samym ustawieniem Item:Semantic . Atrybut opcjonalny. |
Element:dopełnienie | Liczba całkowita | Ciąg zawierający dodatnią liczbę całkowitą (w bajtach) dodatkowej
dopełnienie między końcem elementu multimedialnego a początkiem następnego elementu
element multimedialny lub koniec pliku, jeśli zostanie użyty w ostatnim elemencie multimedialnym w
Container:Directory Jeśli wartość nie jest podana, przyjmuje się wartość 0.
Opcjonalne. |
Element:URI | Tekst | Ciąg znaków identyfikatora 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. Wartość domyślna to który jest podstawowym zasobem obrazu. Opcjonalny dla typów MIME podstawowy format pliku multimedialnego ISO/IEC 14496-12. Można ich użyć w inny sposób. |
Wartości typu MIME elementu
Atrybut Item:Mime
określa typ MIME każdego elementu multimedialnego.
i skalowalnych danych.
Wartość | Opis |
---|---|
obraz/JPEG | Obraz JPEG. |
Przykładowy XMP GContainer
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>