Gölgelendirici matematik için, doğrusal RGB neden sRGB gamını korumalı?


13

sRGB genellikle "doğrusal RGB" ile zıttır.

  • Görüntüler diskte saklanır ve yaklaşık algısal olarak yoğunluğu eşit olan sRGB'de ekranlara aktarılır .
  • Gölgelendirici matematik, yoğunluğu fiziksel olarak eşit olan doğrusal RGB'de yapılır .
  • Bu ikisi arasında dönüştürmek için gama düzeltmesi uygulanabilir.

Şimdi, sRGB gamını kolorimetrik olarak belirten, saf kırmızı, yeşil, mavi ve beyazın tam olarak nerede olduğunu söyleyen bir standarda sahiptir. Ancak sadece "doğrusal RGB" için karşılık gelen bir standart yoktur. Renklilik diyagramındaki herhangi bir üçgenin doğrusal olduğu söylenebilir ve gerçekten de aralarından seçim yapabileceğiniz birkaç iyi bilinen gam vardır:

RGB gamutları

Pratikte, "doğrusal RGB" dediğimizde "gama düzeltmesi olmadan sRGB" kastedilmektedir. (Bu, sRGB gama düzeltmesini son bir son işlem adımı olarak uyguladığımız, ancak oluşturma hattının geri kalanı için renk boşluklarını yok saydığımız zaman örtük olarak yapıyoruz.)

Peki bu RGB gamı ​​enterpolasyon ve aydınlatma hesaplamaları için neden doğru olanı? Keyfi görünüyor. Bir şey varsa, dahili hesaplamalar için mümkün olan en büyük gamı ​​kullanmak ve daha sonra renkleri çıkış cihazının gamutuna kırpmak veya ölçeklendirmek istemez miyiz?

RGB aydınlatma ne olursa olsun yaklaşık olacak mı, bu yüzden hangi gamı ​​seçtiğimiz önemli değil ve ekranın doğal olarak desteklediğine en yakın olanı da seçebilir miyiz? Sadece ihmal mi? Yoksa bu farklı gamlardaki hesaplamalar aslında bir şekilde aynı sonuçları mı veriyor?

Yanıtlar:


13

Doğrusal RGB hakkında konuşmaktan kaçınılmalıdır çünkü RGB renk iç yapısı hakkında bir şey söylemez, örn. Primerler, Beyaz Nokta ve Renk Bileşeni Aktarım İşlevleri. Birkaç yıl önce, sRGB'nin ortada olduğunu varsayarak, günümüzde DCI-P3 ve BT.2020 çok yaygın olduğu için, dışlanması gerekir.

Render için ideal gamut, gerçek dünya referansı veya daha uygun şekilde bir zemin gerçeği spektral görüntüsü ile ilgili hataları en aza indirecek olan gamuttur. Bu cümlenin ilk paketi, çeşitli RGB renk alanlarının eşdeğer olmaması ve benzer sonuçlar üretmemesidir.

Biri aynı temel renklerle, ancak biri sRGB / BT.709 ile kodlandığı yerde diğeri DCI-P3 ile kodlandıkları ve ardından elde edilen iki görüntüyü örneğin ACES2065-1'e dönüştürdükleri düşünülebilir. aynı görüntüleri verir ama durum böyle değildir. Doğrusal cebirin ve matrislerin doğası nedeniyle bazı matematiksel işlemler, verilen RGB renklendirme primerlerine, yani renk alanları esasına bağlıdır. Farklı RGB renk alanında yapılan aynı işlemler, CIE XYZ renk uzayına dönüştürüldükten sonra farklı tristimulus değerleri verecektir. Örneğin çarpma, bölme ve güç işlemleri RGB renklendirme primerlerine bağımlıdır, toplama ve çıkarma değildir.

RGB Renk Uzayları ve Üs

Bu görüntü, çeşitli renkleri kendi başlarına farklı RGB renk alanlarına çarpmanın etkisini göstermektedir: ortaya çıkan renkler farklıdır. Çeşitli örnekler aşağıdaki gibi üretilir: 3 rastgele sRGB renk alanı değeri toplanır ve incelenen üç RGB renk alanına dönüştürülür, bunlar üssel hale getirilir, tekrar sRGB renk alanına dönüştürülür, solda CIE 1931 Renklilik Diyagramında gösterilir ve sağ.

Ward ve Eydelberg-Vileshin (2002) , Langlands ve Mansencal (2014) ve Mansencal (2014) tarafından yapılan testler ve araştırmalar , spektral bölgeye en yakın primer içeren gamların , yani spektral olarak keskin primerlerin, spektral zemine kıyasla hataları en aza indirme eğiliminde olduğunu göstermiştir. gerçeği yansıtır.

İşte yakın zamanda Mitsuba ile Anders ile olan bulgularımızı tekrar doğrulamak için oluşturduğum bir görüntü:

Oluşturma Renk Alanları

Bunlar BT.709 primerleri (ilk sıra), 47 spektral kutu (ikinci sıra), BT.2020 primerleri (üçüncü sıra), spektral eksi BT.709 primerleri, kalıntıları (dördüncü sıra), spektral eksi BT'yi kullanarak aynı sahnenin renderlarıdır. .2020 primerleri kalıntıları oluşturur (beşinci sıra). Son satır, sırasıyla BT.709 primerlerinin, spektral ve BT.2020 primerlerinin oluşturduğu üç dikey şeritle birleştirilmiş kompozit görüntüleri gösterir. Doğrudan aydınlatma renderlar arasında eşleşme eğilimindedir. BT.709 ve BT.2020 primerlerinin oluşturduğu çoklu ışık sıçramalarının, yani tavanın etkisini gösteren alanlar, özellikle BT.709 primerlerinde özellikle BT'de artan doygunluk sergileme eğilimi gösterir veya .2020 render. Aykırı değerler, örneğin görünür ışık kaynağı hariç, spektral render ile RMSE 0.0083'tür.ve sırasıyla BT.2020 primerleri ve BT.709 primerleri oluşturma için 0.0116 .

Artık her zaman daha iyi performans gösterecekleri anlamına gelmiyor ve BT.709 / sRGB'ye karşı önyargı gösterecek örnekler üretilebiliyor. Ana paket, RGB render'ların spektral render'larla eşleşememesidir ve keskin geniş gamlar daha iyi performans gösterme eğilimindedir. Bir render rengi seçerken, Pointer's Gamut'u kapsayan geniş bir gamı ​​olan birini seçerdim ve DCI-P3, BT.2020 veya ACEScg bunun için mükemmel adaylardır.


5

Pratikte, "doğrusal RGB" dediğimizde "gama düzeltmesi olmadan sRGB" kastedilmektedir.

"SRGB renk alanı" ve "doğrusallaştırılmış sRGB renk alanı" olduğunu söylemek daha doğru olur, sRGB belirtim tanımı birinden diğerine dönüşüm.

Evet, sonsuz sayıda "doğrusal RGB" renk alanı vardır. Ancak tüm bu "doğrusal RGB" renk uzaylarının ortak noktası, doğrusal olmalarıdır . Bu, herhangi bir bileşenin değerini iki katına çıkarırsanız, bileşenin temsil ettiği ışığın yoğunluğunu iki katına çıkarırsınız. Esasen "doğrusal" olmanın anlamı budur: renk değerleri ile bu açık rengin ortaya çıkan yoğunluğu arasında doğrusal bir eşleme vardır.

Bu önemlidir çünkü renk değerleri ışık yoğunluklarıyla doğrusal olarak eşleşmezse aydınlatma denklemleri çalışmaz. Ancak denklemler hangi doğrusal renk aralığını kullandığınız umurumda değil ; sadece birini seçmelisin.

Dolayısıyla, doğrusallaştırılmış sRGB renk alanı, doğrusallaştırılmış bir Adobe RGB renk aralığından veya doğrusallaştırılmış bir SWOP CMYK renk aralığından daha doğru değildir. Önemli olan iki şeydir:

  1. Renk aralığı, değerlerin ışık yoğunluklarına doğrusal bir eşlemesini temsil eder.
  2. Seçilen renk aralığı , aydınlatma denkleminde sürekli olarak kullanılır. Yani, aydınlatma denkleminde kullanılan tüm renkler aynı (doğrusal) renk uzayından gelir.

RGB aydınlatma ne olursa olsun yaklaşık olacak mı, bu yüzden hangi gamı ​​seçtiğimiz önemli değil ve ekranın doğal olarak desteklediğine en yakın olanı da seçebilir miyiz?

Bu ve sRGB dönüşüm günümüzde donanıma yerleşik olduğu gerçeği, diğer renk alanı dönüşüm sık değildir. Bu nedenle, doğrusallaştırılmış Adobe RGB renk alanını kullanmak istiyorsanız, metin değerlerini doğrusallaştırmak ve hatta uygulayabilmeniz için üzerlerinde doğru olarak doğrusal / üçgensel enterpolasyon yapmak için gölgelendiricilerinizde çok fazla iş yapmanız gerekir (doğrusallaştırmadan sonra yapılması gerekir) onları aydınlatma denklemine. Ve sonra doğrusallaştırılmış Adobe RGB'den doğrusallaştırılmış sRGB'ye dönüştürme yapmalısınız, böylece görüntüleme için bir sRGB çerçeve tampon görüntüsüne yazabilirsiniz.

Veya her yerde doğrusallaştırılmış sRGB'yi kullanabilir ve performans elde edebilirsiniz. İkincisi kazanma eğilimindedir.


Bu yazı hakkında ne düşünüyorsun ? Ben doğru okuyorsam, farklı doğrusal renk alanlarında hesaplamaları gösterir yapmak farklı sonuçlara yol.
Makspm

@Maxpm: Bu ilginç. Bu makaleyi okuduğumda, sorunun ışığın aslında RGB renk alanı modelimize uymadığı gerçeğine bağlı olması. Bu, matematiksel olarak aynı şey olması gereken şeylerde farklı görsel sonuçlara neden olur. Orada, tek çözüm RGB kullanmayı bırakıp spektral render kullanmaya başlamak gibi görünüyor.
Nicol Bolas

@ Makspm ama tabii ki diğer tüm alanlarda farklı sonra yaptıkları. Ama sonra RGB renk değil, bu yüzden var. Ama sonra doğru olmak istediğin soru var. Kazançlar küçülüyor,
joojaa

0

Özellikle sRGB'nin iki nedeni vardır. HDR olmayan giriş görüntüleri için, bunların sRGB'ye sıkıştırıldığı varsayılmaktadır (bu iddianın doğru olup olmadığı farklı bir hikaye). Bu nedenle, üzerinde herhangi bir doğrusal matematik işlemi yapmadan önce, bunları sRGB'den sıkıştırmanız gerekir. Bir görüntünün yakalanması ve sRGB olmayan farklı bir gösterime sıkıştırılması da mümkündür, bu durumda o belirli gösterimi açmanız gerekir. Her durumda, kodlama, giriş görüntüsünün asla kaçmayacağı belirli bir gamı ​​ima eder (çünkü sRGB saklanan görüntüler genellikle kanal başına 8 bite kesilir), ancak gölgelendirici matematiğinizin girişten sonra bu gamutta kalması gerekmez görüntü açılır. Ama sonunda ekranı düşünmelisin.

Bir görüntünüz varsa ve görüntüleme zamanı geldiğinde, görüntü aygıtının gerektirdiği bir gösterimde kodlarsınız. CRT'ler sRGB'yi seçti, ardından LCD'ler öykünmeyi izledi, bu nedenle monitör ekranı için sRGB sıkıştırması son yıllarda yaygın bir seçim oldu ve bu da çıktının sRGB gamutuna yapışmasını kısıtladı, aksi takdirde kırpma gerçekleşecek. Daha geniş menzilli ekranların o gamta bağlı kalması gerekmez.

(İnsan yapımı görüntülerin sRGB kodlu olduğu iddiasının temelinin, bu görüntülerin sRGB ekranlarda yazıldığı varsayıldığından kaynaklandığını düşünüyorum)

Şimdi, özellikle sRGB'nin gölgelendirici matematik girişi ve görüntü görüntüleme için donanımda neden desteklendiğini daha iyi görebilirsiniz. Bu yaygın bir durumdur. Ayrıca, algısal renk bantlama artefaktlarını azaltmak için iyi özelliklere sahiptir, bu nedenle renkleri 8 bitte sıkıştırmak ve insanlara mantıklı görünmelerini sağlamak için iyi bir yoldur.


0

0..1 aralığının dışındaki değerlere izin verirseniz, sRGB'nin oldukça sınırlı primerlerinde bile, tüm insan görsel gamına hitap edebilirsiniz. Bu nedenle, kayan nokta açık renk değerlerini saklamak için kullandığınız primerlerin çok fazla önemi yoktur. Ancak, her türlü çarpımsal matematik yapmak biraz korkaklaşır, çünkü primerlerin keyfi koordinatları ölçeklendirme 'pivot' olarak hareket eder. sRGB primerleri genellikle kullanılır çünkü geleneksel olarak giriş verileriniz sRGB kodludur ve çıkış ekranı sRGB veya rec709'dur ... rec2020 ile bunların yarısı değişmiştir, ancak şimdilik, giriş verilerinizin çoğu hala muhtemelen sRGB kodludur. depolama alanınızla aynı ilkeler yalnızca en kolay seçenektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.