Gamma workflow... Bir önceki yazımızda işledik ve görsel olarak gayet düzgün gerçeğe sadık sonuçlar alabildiğimizi gördük. Durum böyle iken neden farklı bir iş akışına geçme ihtiyacımız olsun ? Gamma WF'nin sorunu mu vardır ? Basit bir şekilde giriş yapalım.
Gamma WF görsel olarak doğru iken matematiksel olarak yanlış bir yöntemdir. Predictable vs Accurate meselesi...
Yukarıda 8 bit değerinde iki spotun değerlerini görüyoruz. Her dairenin değeri yarımdır yani RGB 128 veya 0.5 ya da %50 dir. İkisinin toplamı, kesişim alanı da doğal olarak 255, 1 veya %100 e denk gelir. Şimdi sorunun ortaya çıktığı yere gelelim.
Yaygın bir sade matematiksel işlemle başlayalım 2+2 ≠ 10. Konumuzla ne alakası var ? Color Space grafiğimizi ekleyelim.
X ekseni - Sarı Eğri = sRGB-Gamma 2.2 transformasyonu
Y ekseni - Beyaz Diyagonal Çizgi = Linear - Gamma 1.0 çizgisi
Burada matematiğin nasıl bozulduğunu görüyoruz. sRGB'de 0.5, yani yarı, yani midtone, yani ara gri olan nokta Linear aralıkta 0.2 ye denk gelmektedir (Eğri her zaman tam 2.2 olmayabilir bu da %24, %25 gibi değişik sonuçlar verir). Normal şartlar altında sRGB Highlight 1 değeri, yani en parlak nokta Linear'de 0.4 e denk gelmesi gerekirken Gamma konusunda anlattığımız bir nevi hile dolayısıyla Linear'de de 1 e denk gelmektedir. Normal matematikte sRGB'nin en parlak alanı, Linear'ın Midtone'una bile denk gelmez (0.4).
Spot örneğine döndüğümüzde sRGB 0.5 olan iki halka birleştiğinde 1.0 değerini alıyor. Fakat grafikte açıkladığımız gibi sRGB 0.5 değeri Linear aralıkta 0.2 ye denk gelir. İkisini topladığınızda da Linear olarak 0.4 yada %40 lık bir değere denk gelmesi gerekirken %100 e denk geliyor.
Nasıl oluyor da sRGB 1 = Linear 1 olabiliyor ?
Gamma yazımızda da anlatmıştık. Tabiri caizse Gamma parlak bitlerden çalar, kırpar. Grafikten de anlaşılacağı üzere bu bitlerin bir kısmı kırpılırken diğer bir kısmı Shadow Midtone aralığına aktarılır. Yani Linearde arta kalan %60 gibi bir kısım (Gamma'nın max Highlight'ının üzerinde olan parlak değerler ) %40'ın içine sıkıştırılmaya çalışılır. Bu sayede karanlığı zengin, insan gözüne uygun bir tonal dağılım sağlanır. Fakat...
Color Depth yazımızda da belirttiğimiz gibi Luminance değeri herşeydir. Parlak alanlarda ne kadar fazla basamağımız, bit değerimiz varsa görseli çatlatmadan değerleriyle oynama lüksümüz o kadar artar ve en az bunun kadar önemlisi matematiksel oranı yakalayarak düzgün sonuçlar elde etmiş oluruz. SRGB sorunu ve Linear çözümünü bariz bir ördekle açıklayalım :
sRGB üzerinden üretilmiş bir Ramp'imiz var. Sol %100 Kırmızı, Sağ %100 Yeşil orta ise %50 Kırmızı + % 50 Yeşil. Bu toplama işleminde ortada beklenen parlaklık değeri doğal olarak %100 dür. Fakat resme dikkatlice bakın. Sol, sağ alanlar %100 parlakken ortadaki Brightness neredeyse %20'lere düşmüş durumda? Bunu açıklamak için tekrar Color Space grafiğimize dönelim :
Görüldüğü gibi sRGB'de %50, Linear'de %20 ye karşılık gelir. Yani yukarıdaki Rampimizde orta alandaki değer %20 + %20 = %40 yapar ve Milliyetçi Hareket Partisinin... Linear uzayda %100 beklerken 40 la sınıfta kaldık. Ortadaki kararmanın sebebi de bu.
LWF'ye geçtiğimizde ise bu sorunu temelli çözmüş oluruz :
Ramp'i radial yaparsak sorun ve çözüm daha da belirgin hale gelir. ;
Bu çözüm kullandığınız her Ramp'te, Blur'da, FX'de ,Glow'da, Plug-in'de hem görsel hem de matematiksel doğruluk olarak size dönecektir.
Yukarıdaki sorunun başka bir türünü ya da kökenini ele alalım. Add blend modunun düzgün çalışmaması. Doğal kanunları ele alırsak 0.7 şiddetindeki iki spotun bileşimi bize 1.4 değerini verir. Fakat sRGB linearize edilmedikçe 1 veya %100 ün üzerine çıkamaz. Durum böyle olunca 1 in üzerinde olan parlak alanlar (0.4 lük kısım )Highlight bölgesine sıkıştırılır ve Add modunu kullandığımızda gerçek dışı istenmedik patlamalar ortaya çıkar.
Resimde bi ormanın üstüne klasik olarak ateşi add ile blend ettik. (Yeşili sevelim doğayı koruyalım, maksat yok öyle denk geldi). Gördüğümüz gibi ateşin birçok detayı kayboldu Highlight zirve yaptı. Ateşin orjinalini görmediğiniz için idrak etmeniz zor olabilir. Birazdan Linear'e geçtiğimizde gerçeği göreceğiz. Peki bu durum neden böyle oldu ?
Tekrar Color Space grafiğimize dönüyoruz :
Grafiği iki nokta üzerinden inceleyelim. sRGB-Linear Highlight = 1, sRGB Midtones = 0.5 = Linear = 0.2. Bu ne anlama geliyor ? Basit. Highlight, Midtone'un 2 katı olması gerekirken LWF de tam 5 katına denk gelir. İnanmıyorsanız dayıya sorun. sRGB Midtone = Linear 0.2, 0.2 * 5 = 1.0. Bu sRGB eğrisinin 1.5 e uzaması anlamına gelirken böyle bir durum söz konusu olmaz ve yukarıda belirttiğimiz gibi, sRGB, 1 i aşan her eklemeyi, parlaklığı 1'in içine sıkıştırır. Bu yüzden Add metodu gerçekdışı patlamalara sahne olur.
Aynı sahneyi linearize edersek denk midtone, highlight oranından dolayı nur topu gibi bir ateşimiz olur.
Linear Additive
non-Linear Additive
LWF, yazılım çekirdeğinde işleyen bir akış olduğundan kullandığınız FX ler internetten indirdiğiniz Gamma uygulanmış resimler üzerinde de daha kaliteli sonuçlar doğurur.
Altered Carbon dizisinden bir sahne :
Non-Linear olarak eklenmiş Glow efekti. Parlak alanlar patlarken Glow kendi bölgesinden doğal bir şekilde yayılamıyor :
Linear Workspace. Patlamalar yok denecek kadar az. Glow, merkezi patlatmadan daha uzağa yayılabiliyor. Atmosferik haze efekti gibi yumuşak.
Başka bir örnek Post FX de sık kullanılan DOF. FL Out Of Focus plugini üzerinden görelim
Aslında kötü görünmüyor fakat doğal hayatta bokeh daha canlı ve hatları daha keskindir.
Linear Workspace. Daha canlı renkler, hatları belirgin bokehler.
Bu yazıyı tek nefeste bitirmeye niyetliydim fakat LWF'nin yazılıma göre farklı adaptasyonları, sorunları ve çözüm yöntemleri aklıma geldi. Bu yüzden yazıyı iki part olarak yapalım. Girişi burada noktalayıp sonraki yazımızda yazılım tabanlı LWF'yi işleyelim.
Selametle kalın.
Comments