Giriş
Bu belge, JPEG resim dosyasında logaritmik aralık kazanımı harita görüntüsünü kodlayan yeni bir dosya biçiminin davranışını tanımlar. Yeni biçimi desteklemeyen eski okuyucular, resim dosyasından geleneksel düşük dinamik aralık resmini okur ve görüntüler.Bu biçimi destekleyen okuyucular, birincil resmi kazanç haritasıyla birleştirir ve uyumlu ekranlarda yüksek dinamik aralıklı resim oluşturur.
Bu belgenin geri kalanında, bu biçimin kullanılması için gereken süreçler açıklanmaktadır. Bu biçime uyan bir resmin yaşam döngüsü genel olarak şu şekildedir:
Kodlama
- Harita oluşturma elde edin
- Harita sıkıştırması elde edin
- Harita kapsayıcısı oluşturma elde etme
Kod çözülüyor
Motivasyon
Bu dosya biçiminin amacı, ek bilgileri SDR görüntü dosyalarında kodlamaktır. Bu dosyalar, optimum HDR oluşturmalarını tek bir dosyada üretmek için görüntüleme tekniğiyle birlikte kullanılabilir.
Bunun pratik olması için dosya biçimi şu özelliklere sahip olmalıdır:
- Naif görüntüleyenlerde geleneksel SDR görüntüsünün gösterilmesi için geriye dönük uyumlu olun.
- Fazladan alan kaplamaz.
Ayrıca, görüntüleme tekniği şunları sağlamalıdır:
- Kodu çözmek için yoğun işlem yapmak gerekmez.
- Ekranların HDR ve SDR beyaz noktaları arasındaki her orana uyum sağlayabilirsiniz. Bu noktalar cihazlar arasında, hatta tek bir cihazda geçici olarak farklılık gösterebilir.
Son olarak, tekniğin önceki işlemlerin tümünü hiçbir zaman olmaksızın yapabilmesi gerekir:
- Öne çıkan anlardan klipler oluşturuluyor.
- Ezici gölgeler.
- Yerel kontrastı değiştirme veya sıkıştırma.
- Göreli ton ilişkilerinin değiştirilmesi (sahnedeki nesneler arasındaki).
Bağımlılıklar
Aşağıda, bu spesifikasyon için normatif referanslar verilmiştir:
- Adobe XMP Spesifikasyonu 3. Bölüm: Dosyalarda Depolama
- ISO 16684-1:2019 XMP Spesifikasyonu, Bölüm 1
- ISO/IEC 14496-12 ISO temel medya dosyası biçimi
- T.81 (09/92) Kesintisiz tonlu sabit resimleri dijital olarak sıkıştırma ve kodlama
- CIPA DC-x 007-2009 Çok Resimli Format Beyaz Belge
Tanımlar
SDR ekran
- HDR içerikleri görüntülemek için tasarlanmamış geleneksel bir ekran. Bu ekranlar genellikle yaklaşık 400 cd/m2 veya daha düşük bir nominal en yüksek parlaklık üretir.
HDR ekran
- HDR içerikler için tasarlanmış ekran. Bu ekranlar, genellikle SDR ekranlara kıyasla daha yüksek bir nominal en yüksek parlaklık (genellikle 800 cd/m2 veya daha yüksek) üretir ve ayrıca SDR ekranlara göre daha iyi kontrast oranlarına sahiptir.
Birincil görsel
- Bir GContainer dosyasındaki ikincil medya dosyaları eklenmiş bir görüntünün ilk örneği. Birincil görüntü, dosya kapsayıcısında sonraki ikincil medya öğesi dosyalarının sırasını ve özelliklerini tanımlayan GContainer XMP meta verilerini içerir.
İkincil resim
- Bir GContainer dosyasında birincil resme eklenen sonraki medya öğesi dosyaları.
Aralık sıkıştırma
- Fotoğrafçılıkta, gerçek dünya sahneleri genellikle SDR ekranın temsil edebileceğinden daha dinamik bir aralığa sahiptir. Bir görüntünün dinamik aralığını azaltmak için aralık sıkıştırma gibi (yerel ton eşleme olarak da adlandırılır) işlemler gerekir. Bu azaltmanın, yerel kontrastı mümkün olduğunca korurken parlak alanları kırpmayı veya gölgeleri sıkıştırmayı önlemesi gerekir.Resimdeki büyük parlaklık kenarlarının boyutunu azaltmaya çalışırsınız. Bu da genel kontrasta daha fazla katkıda bulunur. Küçük parlaklık kenarlarının boyutunu korumaya çalışırken ayrıntılardır.Birçok farklı uygulama olsa da, böyle bir işlem günümüzde çoğu modern dijital fotoğraf makinesinde standarttır.
SDR beyaz nokta
- Zaman içinde bir ekrandaki SDR içeriğinin maksimum doğrusal parlaklığı.
HDR beyaz nokta
- Zamandaki belirli bir noktada bir ekrandaki HDR içeriğinin maksimum doğrusal parlaklığı. Bu değer genellikle SDR beyaz noktasından daha yüksektir.
Güçlendirme
- HDR beyaz noktasının SDR beyaz noktasına bölümü.
Maksimum içerik güçlendirme (denklemlerde
max_content_boost
)- Bu değer, içerik oluşturucunun bir resmin HDR ekranında gösterildiğinde SDR işleme göre ne kadar parlak olacağını kısıtlamasını sağlar.
- Bu değer, belirli bir görsel için sabittir. Örneğin, değer dörtse herhangi bir piksel için görüntülenen HDR görüntüsünün doğrusal parlaklığı, en fazla 4 kat daha fazla doğrusal parlaklık olmalıdır. Pratikte bu, sahnenin daha parlak kısımlarının 4 kata kadar daha parlak gösterilebileceği anlamına gelir.
- Pratikte bu değer genellikle 1, 0'dan büyüktür.
- Her zaman Min. içerik güçlendirme'den büyük veya bu değere eşittir.
Minimum içerik güçlendirme (denklemlerde
min_content_boost
)- Bu değer içerik oluşturucunun, bir resmin HDR ekranda gösterildiğinde SDR oluşturma işlemine göre ne kadar koyu alabileceğini kısıtlamasına olanak tanır.Bu değer, belirli bir görsel için sabittir.
- Örneğin, değer 0, 5 ise herhangi bir piksel için görüntülenen HDR görüntüsünün doğrusal parlaklığı, SDR oluşturma işleminin doğrusal parlaklığının (en az) 0, 5 katı olmalıdır.
- Pratikte bu değer genellikle 1,0'a eşit veya 1,0'dan daha küçüktür.
- Her zaman Maksimum içerik güçlendirme değerinden düşük veya buna eşittir.
Maksimum görüntülü reklam artışı (denklemlerde
max_display_boost
)- Belirli bir zamanda, bir ekranın desteklediği maksimum kullanılabilir artış. Bu değer, cihaz ayarlarına ve ortam ışığı koşulları ya da ekranda kaç tane parlak piksel olduğu gibi diğer faktörlere bağlı olarak zaman içinde değişebilir.
- Örneğin, bu değer 4,0 ise ekran, SDR beyaz noktasından en fazla dört kat daha parlak bir piksel görüntüleyebilir. Ekran her zaman en az SDR beyaz kadar parlak olarak HDR beyazı gösterebileceği için bu değer her zaman >= 1, 0'dır.
Ekran güçlendirme
- Maksimum içerik artışı ve maksimum görüntüleme artışından daha azına eşittir. Bu değer her zaman >= 1,0'dır.
- Örneğin, maksimum içerik artışı 4,0 ve maksimum görüntüleme artışı 3,0 ise görüntü artışı 3,0 olur. Ekran özellikleri sınırlayıcı faktör olduğundan, pikseller SDR'ye göre 3 kat daha parlaktır.
- Başka bir örnek olarak, maksimum içerik artışı 4,0 ve maksimum görüntüleme artışı 5,0 ise görüntü artırması 4,0 olur. İçeriğin amacı sınırlayıcı faktör olduğundan, pikseller SDR'ye göre 4 kat daha parlak görüntülenir.
Hedef HDR oluşturma
- İçerik üreticiye göre ideal HDR oluşturma.
Uyarlanmış HDR oluşturma
- Hedef HDR oluşturma mevcut ekran güçlendirmesi için uyarlandıktan sonra ekranda gösterilen son HDR oluşturma işlemi.
Harita elde edin (denklemlerde
recovery(x, y)
)- Hedef HDR işlemini üretmek için SDR oluşturmada her pikselin ne kadar parlaklık uygulanacağını gösteren harita. Bu harita tek kanallı veya çok kanallı olabilir. Çok kanallı harita, kırmızı, yeşil ve mavi gibi her renk kanalı için ayrı bir kazanç olduğunu gösterir. Bu belgede tek kanallı harita örneği gösterilmektedir.
clamp(x, a, b)
- x değerini [a, b] aralığına sabitleyin.
exp2(x)
- Taban 2 üssü; 2x.
floor(x)
- x'e eşit veya x'ten küçük en yakın tam sayıyı döndürür.
log2(x)
- 2. taban logaritma; log2(x)
pow(b, x)
- Üs alma; bx.
XMP
- Genişletilebilir Meta Veri Platformu'dur. Meta verileri bir görüntü kapsayıcısına kodlama yöntemini tanımlayan bir standart; ISO 16684-1:2011(E) XMP Spesifikasyonu Bölüm 1'de tanımlanmıştır.
Çoklu Resim Biçimi
- Çoklu Resim Biçimi, JPEG kodlu birden fazla görüntüyü tek bir JPEG dosyasında depolamak için Kamera ve Görüntüleme Ürünleri Birliği (CIPA) tarafından geliştirilen bir tekniktir.
- Daha fazla bilgi için CIPA DC-x 007-2009 Multi-Resim Biçimi'ne ilişkin teknik belgeye bakın.
GContainer
- GContainer, bir resmin birincil resim olarak kabul edildiği bir görüntü kapsayıcısında birden fazla görüntü depolamak için kullanılan bir yöntemdir. Ek resimler, alternatif versiyonlar veya yardımcı resimler olarak kabul edilir. XMP meta verileri, ek resimlerin varlığını ve anlamını bildirmek için kullanılır. Daha fazla bilgi edinmek için GContainer ayrıntıları bölümüne bakın.
Kodla
Bu bölümde, uyumlu bir JPEG dosyasının nasıl kodlanacağı açıklanmaktadır. JPEG biçimi hakkında daha fazla bilgi için Bağımlılıklar bölümündeki T.81 (09/92) Kesintisiz tonlu hareketsiz resimlerin dijital olarak sıkıştırılması ve kodlanması bölümüne bakın.
Harita oluşturma elde edin
Kamera görüntüleme ardışık düzenleri, daha yüksek dinamik aralık parlaklık verilerini daha düşük geleneksel SDR ekranlar aralığına sıkıştırmak için genellikle bir aralık sıkıştırma işlemi gerçekleştirir. Kazanç haritası, orijinal, daha yüksek dinamik aralık parlaklığı verilerini kurtarmak için yeterli veriyi depolayacak bir mekanizma sağlar.
Bu bölümde yer alan aşağıdaki hesaplamalarda, kayan nokta aritmetiği olduğu varsayılır.
Aşağıdaki işlevler SDR görüntüsünü tanımlar:
SDR'(x, y)
, üç kanallı, doğrusal olmayan (genellikle gama kodlamalı) birincil görüntüdür.SDR(x, y)
, üç kanallı birincil resmin doğrusal sürümüdür. Bu boyut, birincil resim renk alanının doğrusal sürümüne dönüştürülerek elde edilir. Örneğin, sRGB aktarım işlevi bulunan bir renk alanından sRGB renk primerlerini koruyan doğrusal bir renk alanına geçiş yapabilirsiniz.
Ysdr(x, y)
işlevi 0,0-1,0 aralığında tanımlanır ve standart dinamik aralıktaki birincil resim doğrusal parlaklığıdır:
Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))
HDR görüntüsü için de benzer tanımlar vardır.
HDR'(x, y)
, üç kanallı, doğrusal olmayan, yani PQ veya HLG kodlamalı bir resimdir.HDR(x, y)
, üç kanallı doğrusal HDR görüntüdür.
Yhdr(x, y)
, HDR görüntünün belirli bir noktasındaki parlaklıktır:
Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))
Yhdr(x, y)
, 0,0 ile maksimum içerik güçlendirme aralığında tanımlanmıştır.
SDR ve HDR resimler aynı çözünürlükte olmalıdır. SDR görüntünün renk profili, HDR resmin renk alanını tanımlar.
Örneğin, SDR birincil resminin Display-P3 renk profili varsa HDR resmi, profilin birincil renklerine göre tanımlanır. Yani HDR görüntüde Display-P3 primerleri de bulunur.
Kazanç haritası, istenen HDR görüntü parlaklığını (Yhdr(x, y)
) ve standart aralık parlaklık görüntüsünü (Ysdr(x, y)
) içeren iki doğrusal görüntüden hesaplanır.
pixel_gain(x, y)
işlevi, Yhdr(x, y)
işlevi ile Ysdr(x, y)
işlevi arasındaki oran olarak tanımlanır:
pixel_gain(x, y) = (Yhdr(x, y) + offset_hdr) / (Ysdr(x, y) + offset_sdr)
Ysdr(x, y)
ve offset_sdr
değerlerinin ikisinin de sıfır olduğu pixel_gain(x, y)
işlev davranışı, uygulama tarafından tanımlanır.
Örneğin uygulamalar, pixel_gain(x, y)
'yi 1,0 olarak tanımlayarak Ysdr(x, y)
ve offset_sdr
öğelerinin sıfır olduğu durumu ele alabilir. Alternatif olarak, uygulamalarda sıfır olmayan bir offset_sdr
kullanarak bu senaryodan kaçınabilirsiniz.
Uygulama sırasında offset_sdr
ve offset_hdr
değerleri seçilebilir.
Kazanç haritası, maksimum içerik artışı ve minimum içerik artışına göre pixel_gain(x, y)
değerini logaritmik bir alanda kodlayan skaler bir işlevdir:
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)
log2(0)
tanımlanmamış olduğundan pixel_gain(x, y)
sıfır olan recovery(x, y)
işlev davranışı uygulama olarak tanımlanır.
map_gamma
, 0,0'dan büyük olması gereken ve uygulama tarafından seçilen bir kayan nokta sayısıdır.
Maksimum içerik artırma ve minimum içerik güçlendirme değerleri, uygulama tarafından tanımlanır ve içerik oluşturucu tarafından rastgele belirlenebilir. Maksimum içerik güçlendirme en az 1,0 olmalıdır. Minimum içerik güçlendirme değeri (0,0, 1,0] aralığında olmalıdır.
recovery(x, y)
içindeki değerler, [0,0, 1,0] aralığıyla sınırlıdır.
Kazanç haritası ikincil bir resim JPEG dosyasında depolanır ve bu nedenle 8 bit, imzalanmamış tam sayı değerleri kullanılarak (yani [0, 255] aralığında) kodlanmalıdır. Her değer bir recovery(x, y)
değerini temsil eder ve ikincil resmin bir pikselinde depolanır.
8 bitlik imzasız tam sayı depolama için kodlanmış değer aşağıdaki şekilde tanımlanır:
encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)
Kodlama işlevinin hesaplanması, kayan nokta üzerinde yapılır ve belirtilen şekilde yuvarlanarak sonda 8 bitlik imzalanmamış tam sayı sonucuna dönüştürülür.
Bu kodlama, recovery(x, y)
değerlerinin 0,0 ile 1,0 arasında 8 bitlik imzasız tam sayı gösterimiyle sonuçlanır. Kodlanmış kazanç haritası, JPEG olarak ikincil bir resim öğesinde depolanmalıdır. Uygulama, JPEG kodlaması sırasında kullanılacak sıkıştırma miktarını seçer.
Kazanç haritası ikincil bir resimde depolandıktan sonra MPF ve GContainer XMP meta verilerine sahip birincil resme eklenir. Birincil resim GContainer dizini, kazanç harita görüntüsü için bir öğe içermelidir.
Depolanan kazanç haritasının çözünürlüğü uygulama tarafından tanımlanır ve birincil görüntüden farklı olabilir. Kazanç Haritası'nın, depolama için birincil görüntüden farklı bir çözünürlüğe ölçeklenmesi durumunda, örnekleme yöntemi iki doğrusal veya daha iyi olmalıdır ve uygulama tanımlanır.
Kazanç haritasının yönü, birincil resmin yönüyle eşleşmelidir. Varsa, saklanan kazanç harita görüntüsündeki yön meta verileri EXIF'de olduğu gibi kullanılmaz.
Varsa, kazanç haritasının renk profili kullanılmaz.
Harita kapsayıcı kazan
Renk profili
Resmin renk profili, birincil resim için ICC Profili aracılığıyla belirtilmelidir.
XMP özellikleri
Birincil resim, HDR kazanç harita biçimi için ekstra anlamsal bilgilere sahip en az iki resim tanımlamak üzere XMP meta verileri içerir.
Aşağıdaki alt bölümlerde bu biçime özgü ayrıntılar yer alır. GContainer'a genel uygunlukla ilgili ek bilgiler GContainer ayrıntıları bölümünde belirtilmiştir.
Aşağıdaki tablolarda açıklanan özellik değerleri, belirtilen XMP temel değer türlerinin XMP basit değerleri olarak depolanır.
Öğe semantik değerleri
Item:Semantic
özelliği, kapsayıcı dizinindeki her medya öğesinin uygulamaya özel anlamını tanımlar.
Değer | Açıklama |
---|---|
Birincil | Medya öğesinin, kapsayıcıda görüntülenmeye hazır birincil resim olduğunu belirtir. Dizin bir "Birincil" öğe içermelidir. |
GainMap | Medya öğesinin bir kazanç haritası olduğunu belirtir. Dizin en fazla bir "GainMap" öğesi içerebilir. |
HDR Edinme harita meta verileri
Kazanç haritası meta verileri, birincil görüntünün HDR gösterimini üretmek için kazanç haritasının nasıl yorumlanıp uygulanacağıyla ilgili bilgileri kodlar.
Kazanç haritası meta verisi XMP uzantısının XMP ad alanı URI'si şudur: http://ns.adobe.com/hdr-gain-map/1.0/
. Varsayılan ad alanı öneki hdrgm
şeklindedir.
Bu meta veri, kazanç harita görüntüsünün XMP paketinde depolanır ve aşağıdaki özellikler, kazanç harita görüntüsü XMP'nin rdf:Description
öğesinde görünmelidir:
Ad | Tür | Açıklama |
---|---|---|
hdrgm:Sürüm | Metin | Kullanılan kazanç harita biçiminin sürümü. Bu sürüm "1.0"dır. Required. |
hdrgm:TemelOluşturmaHDR | Boole | Birincil resmin dinamik aralığını gösterir. "False" değeri, birincil görüntünün SDR olduğunu ve kazanç haritasıyla birlikte bir HDR oluşturma işlemi oluşturulabileceğini belirtir. "True" değeri, birincil görüntünün HDR olduğunu ve kazanç haritasının SDR işlemini oluşturmak için bu görüntüyle birleştirilebileceğini belirtir. "False" (Yanlış) olmalıdır. İsteğe bağlı; varsayılan değer "False"'tır. |
hdrgm:GainMapMin | Reel veya sıralı Real dizisi | map_min_log2 değerlerini depolar. Bu, belirli bir pikselde hedef HDR oluşturma için izin verilen minimum içerik artışı oranı olan log2 minimum içerik artışıdır. Bu değer, SDR resmin değerine göre (bölünmüş) elde edilir. Tek bir Real veya sıralı bir Real dizisi olabilir. Sıralı bir Reals dizisi, tüm kanallar için geçerli olan bir öğe, sırasıyla Kırmızı, Yeşil ve Mavi kanallar için üç öğe içerebilir. hdrgm:GainMapMax değerinden küçük veya buna eşit olmalıdır. İsteğe bağlı; varsayılan değer 0,0'dır. |
hdrgm:GainMapMax | Reel veya sıralı Real dizisi | map_max_log2 değerlerini depolar. Bu, belirli bir pikselde hedef HDR oluşturma için izin verilen maksimum içerik artışı oranı olan maksimum içerik güçlendirmesinin log2 değeridir. Bu değer, SDR resmin değerine (bölünmüş) göre gösterilir. Tek bir Real veya sıralı bir Real dizisi olabilir. Sıralı bir Reals dizisi, tüm kanallar için geçerli olan bir öğe, sırasıyla Kırmızı, Yeşil ve Mavi kanallar için üç öğe içerebilir. hdrgm:GainMapMin değerinden büyük veya buna eşit olmalıdır. Zorunludur. |
hdrgm:Gama | Reel veya sıralı Real dizisi | map_gamma değerlerini depolar. Bu, depolanan harita değerlerine uygulanacak gamadır. Tek bir Real veya sıralı bir Real dizisi olabilir. Sıralı bir Reals dizisi, tüm kanallara uygulanan bir öğe, sırasıyla Kırmızı, Yeşil ve Mavi kanallar için
üç öğe içerebilir. 0,0'dan büyük olmalıdır. İsteğe bağlı; varsayılan değer 1,0'dır. |
hdrgm:OfsetSDR | Reel veya sıralı Real dizisi | offset_sdr değerlerini depolar. Bu, kazanç haritası oluşturma ve uygulama sırasında SDR piksel değerlerine uygulanacak göreli konumdur.
Tek bir Real veya sıralı bir Real dizisi olabilir. Sıralı bir Reals dizisi, tüm kanallar için geçerli olan bir öğe veya sırasıyla Kırmızı, Yeşil ve Mavi kanallar için üç öğe içerebilir. 0,0 veya daha büyük olmalıdır.
İsteğe bağlı.Varsayılan değer 0,015625'tir (1/64). |
hdrgm:OfsetHDR | Reel veya sıralı Real dizisi | offset_hdr değerlerini depolar. Bu, harita oluşturma ve uygulama sırasında HDR piksel değerlerine uygulanacak göreli konumdur.
Tek bir Real veya sıralı bir Real dizisi olabilir. Sıralı bir Reals dizisi, tüm kanallar için geçerli olan bir öğe veya sırasıyla Kırmızı, Yeşil ve Mavi kanallar için üç öğe içerebilir. 0,0 veya daha büyük olmalıdır.
İsteğe bağlı.Varsayılan değer 0,015625'tir (1/64). |
hdrgm:HDRKapasiteMin | Gerçek | hdr_capacity_min değerini depolar. Bu, haritanın
uygulandığı minimum görüntüleme artırma değerinin log2
kadarıdır. Bu değer, görüntü artışına göre kazanç haritasının ne kadar uygulanacağını da etkiler. 0,0 veya daha büyük olmalıdır. İsteğe bağlı; varsayılan değer 0,0'dır. |
hdrgm:HDRCapacityMax | Gerçek | hdr_capacity_max değerini depolar. Haritanın tamamen uygulandığı maksimum görüntüleme artırma değerinin log2 kadarı. Bu değer, görüntü artışına göre kazanç haritasının ne kadar uygulanacağını da etkiler. hdrgm:HDRCapacityMin sayısından büyük olmalıdır. Zorunludur. |
Örnek kazanç haritası XMP
Aşağıdaki geçerli kazanç eşlemesi XMP paketi örneği, Giriş bölümünde gösterilen örnek dosyadan alınan meta verileri içerir.
<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>
Kazanç haritasının MPF depolama alanı
Kazanç haritası görüntüsü, Bağımlılıklar bölümünde belirtildiği şekilde CIPA DC-x 007-2009 Çok Resimli Biçimi'nde tanımlandığı şekilde ek resim olarak depolanmalıdır.
Kodu çöz
Bu bölümde, uygun bir JPEG dosyasından kazanç haritası kodunun nasıl çözüleceği açıklanmaktadır.
Biçimin sinyali
Bu biçime uygun bir JPEG dosyası, birincil resmin XMP paketinde hdrgm:Version="1.0"
bulunmasıyla tanımlanabilir. Burada hdrgm
, ad alanı URI'sidir http://ns.adobe.com/hdr-gain-map/1.0/
.
Kazanç haritası görüntüsünü bulun
Görüntüyü ayrıştırma ve kodunu çözmeyle ilgili ayrıntılar için aşağıdaki GContainer ayrıntıları bölümüne bakın. XMP rdf:Directory
içindeki bir "GainMap" semantik öğesi, bir kazanç harita görüntüsünün konumunu işaret etmek amacıyla kullanılır.
Alternatif olarak, bir kazanç haritasının konumunu belirlemek için MPF Endeksi IFD ve tarama görüntülerinin XMP'si kullanılır.
Geçersiz meta verileri işleme
Zorunlu bir alan yoksa veya geçersiz değere sahip bir alan varsa meta veriler geçersiz olarak kabul edilir. Bir değer, belirtilen türe göre ayrıştırılamadığı veya beklenen aralığın dışında olduğu için geçersiz olabilir.
Geçersiz meta verilerle karşılaşılırsa kazanç eşlemesi yok sayılmalı ve SDR görüntüsü gösterilmelidir.
Ekran
HDR kazanç harita biçiminde kodlanan dosyalar, geleneksel SDR ekranlarda veya daha yüksek parlaklık çıkışı yapabilen HDR ekranlarda oluşturulabilir.
Uyarlanmış HDR oluşturmayı oluşturmak için kazanç haritasını kullanma
Bu bölümde yer alan aşağıdaki hesaplamalarda, kayan nokta aritmetiği olduğu varsayılır.
encoded_recovery(x, y)
, kazanç harita görüntüsünden tek kanallı, 8 bitlik, imzalanmamış tam sayı değeridir.
Kazanç haritası birincil resimden farklı bir çözünürlükteyse encoded_recovery(x, y)
, birincil resim genişliği ve yüksekliği aralığında x ve y kazanç haritası resminin filtrelenmiş bir örneklemesiyle belirlenir. Filtreleme yöntemi çift doğrusal veya daha iyi olmalıdır
ve uygulama tanımlıdır.
map_gamma
, hdrgm:Gamma
meta veri alanı tarafından belirlenir.
log_recovery(x, y)
, logaritmik bir alanda normalleştirilmiş kayan nokta piksel kazancıdır:
recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)
Maksimum ekran güçlendirme, mevcut HDR beyaz noktası arasındaki oran ile geçerli SDR beyaz noktası arasındaki oran olarak tanımlanan skaler kayan nokta değeridir. Bu değer, görüntülü reklam sistemi tarafından sağlanır ve zamanla değişebilir.
hdr_capacity_max
, hdrgm:HDRCapacityMax
meta veri alanı tarafından belirlenir.
hdr_capacity_min
, hdrgm:HDRCapacityMin
meta veri alanı tarafından belirlenir.
hdrgm:BaseRenditionIsHDR
"False" (Yanlış) olduğunda weight_factor
aşağıdaki şekilde belirlenir:
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)
hdrgm:BaseRenditionIsHDR
"Doğru" olduğunda ikinci denklem şu şekilde olur:
weight_factor = 1.0 - clamp(unclamped_weight_factor, 0.0, 1.0)
gain_map_max
, hdrgm:GainMapMax
meta veri alanı tarafından belirlenir.
gain_map_min
, hdrgm:GainMapMin
meta veri alanı tarafından belirlenir.
offset_sdr
, hdrgm:OffsetSDR
meta veri alanı tarafından belirlenir. offset_hdr
, hdrgm:OffsetHDR
meta veri alanı tarafından belirlenir.
Doğrusal olarak uyarlanmış HDR oluşturma şu şekilde hesaplanabilir:
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
Gerekirse uygulama, verileri ekranın beklediği alana yerleştirmek için HDR(x, y)
öğesine bir dönüşüm uygulayabilir. Bu tür dönüşümler renksel olarak doğru olmalıdır.
GContainer ayrıntıları
Bu bölümde, bu biçimin GContainer XML meta verilerine uyması gibi ek gereksinimler açıklanmaktadır. Meta veriler, ISO 166841:2011(E) XMP Spesifikasyonu Bölüm 1'e göre serileştirilir ve Adobe XMP Specification Part 3 Storage in Files bölümünde açıklandığı gibi birincil resim dosyasının içine yerleştirilir. Birincil resim dosyası, RDF/XML olarak biçimlendirilmiş aşağıdaki öğeleri içerir.
XMP paket gereksinimleri
XMP paketi, ad alanı URI'sı http://ns.adobe.com/hdr-gain-map/1.0/
aracılığıyla kazanç haritası meta verisi XMP uzantısını içermelidir. Varsayılan ad alanı öneki hdrgm
'dir.
XMP paketi, hdrgm:Version="1.0"
öğesini tanımlayacaktır.
Kapsayıcı öğesi
GContainer XMP uzantısının XMP ad alanıdır. http://ns.google.com/photos/1.0/container/
Varsayılan ad alanı öneki Container
şeklindedir.
Birincil resim, XMP meta verilerinde dosya kapsayıcısında sonraki medya dosyasının sırasını ve özelliklerini tanımlayan bir Container:Directory
öğesi içerir. Kapsayıcıdaki her dosyaya, Container:Directory
içinde karşılık gelen bir medya öğesi vardır. Medya öğesi, dosya kapsayıcısındaki konumu ve birleştirilen her bir dosyanın temel özelliklerini açıklar.
Kapsayıcı öğe, birincil resmin XMP meta verilerine kodlanır ve kapsayıcıdaki medya öğeleri dizinini tanımlar. Medya öğeleri, kapsayıcı dosyasında dizindeki medya öğesi öğeleriyle aynı sırada tutulmalı ve sıkı bir şekilde paketlenmelidir.
Dizin yalnızca bir "Birincil" resim öğesi içerebilir ve bu, dizindeki ilk öğe olmalıdır.
Öğe adı | Tür | Açıklama |
---|---|---|
Kapsayıcı:Dizin | Sıralı Yapı Dizisi | Her biri kapsayıcının düzenini ve içeriğini tanımlayan bir Container:Item struct içeren sıralı struct dizisi. |
Öğe öğesi
Öğe öğeleri, her bir medya öğesinin uygulama tarafından nasıl kullanıldığını açıklar.
GContainer Öğesi XMP uzantısının XMP ad alanı URI'si şudur: http://ns.google.com/photos/1.0/container/item/
. Varsayılan ad alanı öneki Item
şeklindedir.
İlk medya öğesi, birincil resim olmalıdır.Öğe MIME türü değerlerinde listelenen Item:Semantic
= "Primary"
ve bir Item:Mime
belirtmelidir.
Birincil resim öğesinin uzunluğu, birincil resmin dosya kapsayıcısının başından başlayarak MIME türüne göre ayrıştırılmasıyla belirlenir.
Medya öğeleri, medya öğesinin sonu ile bir sonraki medya öğesinin başlangıcı arasında ek dolgu belirten bir Item:Padding
özelliği içerebilir. Container:Directory
içindeki son medya öğesinde mevcut olduğunda Item:Padding
, öğenin sonu ile dosyanın sonu arasındaki dolguyu belirtir.
Her medya öğesi Item:Mime
türü ve Item:Semantic
özellikleri içermelidir.
İkincil resim medya öğeleri, Item:Length
özellikleri içermelidir.
Sıralı medya öğeleri, kaynak verilerini dosya kapsayıcısı içinde paylaşabilir. İlk medya öğesi, kaynağın dosya kapsayıcısındaki konumunu belirler ve sonraki paylaşılan medya öğelerinde Item:Length
değeri 0 olarak ayarlanır. Kaynak verilerinin kendisinin bir kapsayıcı olması durumunda, kaynak içindeki medya öğesi verilerinin konumunu belirlemek için Item:URI
kullanılabilir.
Kapsayıcıdaki medya öğesi kaynaklarının konumu; birincil resim kodlamasının uzunluğu, önceki ikincil medya öğesi kaynaklarının Item:Length
değerleri ve önceki tüm Item:Padding
değerleri toplanarak belirlenir. Item:Padding
, değerini belirtmeyen medya öğesi kaynaklarında 0 olarak kabul edilir.
Özellik adı | Tür | Açıklama |
---|---|---|
Öğe:MIME | Metin | Kapsayıcıdaki medya öğesinin MIME türünü gösteren basit dize. Tanım için Öğe MIME türü değerleri bölümüne göz atın. Required. |
Öğe:Anlamsal | Metin | Medya öğesinin uygulamaya özel anlamını gösteren basit dize. Tanım için Öğe semantik değerleri bölümüne bakın. Required. |
Ürün:Uzunluk | Tam sayı | Öğenin bayt cinsinden pozitif tam sayı uzunluğunu içeren basit dize. Uzunluk 0, medya öğesi kaynağının önceki medya öğesiyle paylaşıldığını gösterir. İkincil medya öğeleri için gereklidir. Birincil resim medya öğesi için isteğe bağlıdır. |
Öğe:Etiket | Metin | Aynı Item:Semantic öğesine sahip birden fazla öğe öğesini netleştirmek için kullanılan uygulama tanımlı dize. İsteğe bağlıdır. |
Öğe:Dolgu | Tam sayı | Medya öğesinin sonu ile sonraki medya öğesinin başlangıcı veya Container:Directory içindeki son medya öğesinde kullanıldığında dosyanın sonu arasında ek dolgunun olduğu bayt cinsinden pozitif bir tam sayı uzunluğu içeren dize. Mevcut değilse 0 değeri varsayılır.
İsteğe bağlı. |
Öğe:URI | Metin | ISO/IEC 14496-12 bölüm 8.11.9'a uygun olan ve medya öğesi kaynağındaki medya verilerinin göreli URI'sını içeren bir URI dizesi. Varsayılan değer, birincil resim kaynağıdır. ISO temel medya dosyası biçimi, ISO/IEC 14496-12 MIME türleri için isteğe bağlıdır. Aksi takdirde kullanılamaz. |
Öğe MIME türü değerleri
Item:Mime
özelliği, her medya öğesi verilerinin MIME türünü tanımlar.
Değer | Açıklama |
---|---|
resim/jpeg | JPEG resmi. |
Örnek GContainer XMP
Aşağıdaki geçerli GContainer XMP paketi örneğinde, Giriş bölümünde gösterilen örnek dosyadan alınmış meta veriler bulunmaktadır.
<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>