Skip to article
Görkem Yıldız, home
Available for October

13 Aşamalı Dönüşüm: Helmlab Pipeline Anatomisi

Helmlab XYZ'den Lab'a 13 aşamada nasıl ulaşır? Her aşamanın ne yaptığını, neden gerektiğini ve 72 parametreyi inceliyoruz.

· 10 min readTürkçeRead in English

Cogu renk uzayi tek bir matris carpimiyla isini bitirir. Oklab: bir 3x3 matris, kup kok, bir 3x3 matris daha — toplam 18 parametre. CIE Lab: bir kup kok fonksiyonu — sifir serbest parametre. Helmlab ise 13 asamali bir pipeline kullanir, toplam 72 optimize edilmis parametre. Bu "fazla karmasik" gibi gorunebilir. Ama bu 13 asama, insan gorsel sisteminin yaklasik 150 milyon yillik evrimsel karmasikligina yanit veriyor. Her asamanin bir nedeni var. Bu yazida o nedenleri inceliyoruz.

Neden Pipeline? Tek Bir Matris Yetmiyor mu?

Insan renk algisi dogrusal degil. Bir matris carpimi dogrusal donusumleri ifade eder: eksenleri dondurur, olcekler, kaydirabilir. Ama algi daha fazlasini yapar:

  • Guc sikistrima — Retina, isik siddetine logaritmik yakin bir cevap verir. Iki kat fiziksel isik iki kat parlak gorunmez.
  • Ton bagimli duzeltmeler — Gozumuz her tonu esit hassasiyetle algilamaz. Mavi-yesil gecisindeki tonlarda daha duyarliyiz, kirmizi-turuncu gecisinde daha az.
  • Parlaklik-doygunluk etkilesimi — Doygun renkler, ayni luminanstaki grilerden daha parlak gorunur (Helmholtz-Kohlrausch etkisi, Post 6'da inceledik).
  • Karanlik bolge ozel davranisi — Cok koyu renkler icin algisal farklar farkli olceklenir.
  • Krominans-parliklik baglantisi — Cok acik ve cok koyu renklerde chroma algisi degisir.

Tek bir matris bu davranislarin hicbirini yakalayamaz. Iki matris ve bir guc fonksiyonu (Oklab'in yaklasimi) birkacini yakalayabilir. Ama tamamini modellemek icin, her biri belirli bir algisal fenomeni hedefleyen bir asamalar dizisi gerekir. Helmlab'in pipeline'i bu dizinin kendisidir.

13 Asama: Pipeline'in Tam Haritasi

Asagidaki akis semasindan sonra her asamayi ayrintili olarak acikliyoruz.

Helmlab Pipeline: XYZ → Lab (13 Asama, 72 Parametre) 1. XYZ → M1 (3x3 matris) 9 parametre — kon cevabi donusumu 2. Guc Sikistrima (gamma) 3 parametre — [0.395, 0.421, 0.434] 3. M2 → Lab (3x3 matris) 9 parametre — karsit renk kanallari 4. Ton Duzeltmesi (Fourier 4-harmonik) 8 parametre — algisal ton dairesi esleme 5. Helmholtz-Kohlrausch Gomme 3 parametre — doygunluk → parlaklik 6. Tona Bagimli Parlaklik (Fourier) 8 parametre — L ince ayari 7. Kubik L Duzeltmesi 2 parametre — koyu/acik uc bolgeler 8. Karanlik L Sikistrima (tona bagimli) 4 parametre — koyu renklerde ozel isleme 9. Chroma Olcekleme (Fourier 4-harmonik) 8 parametre — tona bagimli chroma kalibrasyonu 10. Chroma Guc Fonksiyonu 1 parametre — yuksek doygunluk sikistrima 11. L-Bagimli Chroma Olcekleme 2 parametre — acik/koyu chroma farki 12. Notr Duzeltme (NC) LUT — grilerde a=b=0 garantisi 13. Rijit Rotasyon (-28.2°) 0 parametre — ton acisi hizalama (STRESS-degismez) Helmlab Lab (L, a, b) Matris donusumu Guc fonksiyonu Fourier serisi L duzeltmesi Yapisal duzeltme Toplam: 72 optimize edilmis parametre | 64.000+ insan gozlemi uzerinde egitilmis

Asama 1: XYZ → M1 (9 parametre)

Giris noktasi CIE XYZ koordinatlaridir — fiziksel isik olcumlerinin standart temsili. M1, 3x3'luk bir matris carpimi ile XYZ'yi "kon benzeri" cevaplara donusturur. Neden dogrudan LMS (kon cevabi) kullanmiyoruz? Cunku klasik LMS matrisleri (Hunt-Pointer-Estevez, Bradford) insan deneylerinden degil, fizyolojik olcumlerden turemidir. M1'in her elemani, algisal mesafe verisi uzerinde optimize edilerek algisal dogru kon cevaplarina ulasilir.

Asama 2: Guc Sikistrima (3 parametre)

Her kanal bagimsiz olarak x → x^gamma donusumune tabi tutulur. Gamalar: [0.395, 0.421, 0.434]. Bunlar kup kokun (0.333) yakininda ama kanaldan kanala farkli — cunku her kon tipi farkli bir sikistrima profiline sahip. Bu bagimsiz gamalar v19'un kritik bir tasarim karari: paylasimli gamma (v18'de denendi) 4 serbestlik derecesini kaybettirir ve performansi dusurir.

Asama 3: M2 → Lab (9 parametre)

Ikinci 3x3 matris, sikistrilmis kon cevaplarini karsit renk kanallarinda (opponent channels) ayirir: bir parlaklik ekseni (L) ve iki krominans ekseni (a, b). Bu, retinadan sonra gorsel korteksin yaptigi ayrimanin analitik karsiligidir. Oklab burada durur — Helmlab daha yeni basliyor.

Asama 4: Ton Duzeltmesi (8 parametre)

Ilk uc asama dogru bir ton dairesi garantilemez. Ornegin, fiziksel olarak esit aralikli dalga boylarini esit algisal adimlarla temsil etmeyebilir. Bu asama, 4 harmonikli bir Fourier serisi ile ab duzlemindeki ton acisini duzeltir:

Code
// Ton acisi duzeltmesi: h' = h + f(h)
// f(h) = sum(a_k * cos(k*h) + b_k * sin(k*h)), k=1..4
// 8 parametre: 4 kosinus, 4 sinus katsayisi

Sonuc: algisal olarak esit ton adimlarinin gercekten esit acilarla temsil edildigi bir ton dairesi.

Asama 5: Helmholtz-Kohlrausch Gomme (3 parametre)

Doygun renkler, ayni luminanstaki grilerden daha parlak gorunur (Post 6'da detayli inceledik). Bu asama, chroma'ya bagimli bir L kaymasi ekler: L += w * C^p * hueFactor(h). Parametre sayisi 3: agirlik, us ve ton modulasyonu. Ton modulasyonu, 4. asamanin Fourier serisinden yararlanir. Bu, Oklab ve CIE Lab'in en buyuk kor noktalarini kapatir.

Asama 6: Tona Bagimli Parlaklik (8 parametre)

H-K etkisinin otesinde, bazi tonlar algisal olarak daha "agir" veya "hafif" gorunur. Sari, diger tonlardan daha parlak algilanir — sadece luminans degeri dusuk olsa bile. Bu asama, 4 harmonikli bir Fourier serisi ile L'ye ton-bagimli ince ayar yapar.

Asama 7: Kubik L Duzeltmesi (2 parametre)

Guc fonksiyonlari orta aralikta iyi calisir ama uclarda — cok koyu ve cok acik — algisal farklar farkli olceklenir. Kubik bir polinom, L ekseninin bu uc bolgelerini duzeltir. Sadece 2 parametreyle buyuk bir iyilesme saglar.

Asama 8: Karanlik L Sikistrima (4 parametre)

Karanlik bolge ozel bir dikkat gerektirir: gozumuz karanliktaki kucuk luminans farklarina daha duyarlidir (Weber-Fechner yasasi). Bu asama, ton-bagimli bir sikistrima ile koyu renklerin L degerlerini ince ayarlar. Ornegin, koyu mavi ve koyu yesil farkli sikistrma profillerine sahiptir.

Asama 9: Chroma Olcekleme (8 parametre)

Her tonun chroma araligi farklidir. Kirmizi genis bir chroma araligina sahipken, sari daha dar bir aralikta doygunlasir. 4 harmonikli Fourier serisi, chroma'yi tona gore olcekleyerek bu farklari dengeler.

Asama 10: Chroma Guc Fonksiyonu (1 parametre)

Yuksek doygunluktaki renkler icin algisal chroma, fiziksel chroma'dan daha yavas buyur. Tek bir us parametresiyle C → C^p donusumu bu sikistrmayi modeller.

Asama 11: L-Bagimli Chroma Olcekleme (2 parametre)

Chroma algisi aydinliga bagli olarak degisir. Cok acik ve cok koyu renkler icin chroma algilama kapasitemiz azalir. Iki parametre, L'nin chroma'ya etkisini olcekler.

Asama 12: Notr Duzeltme — NC (LUT)

Burasi v19'un en kritik yeniligi. 11 asamadan gecen bir gri (R=G=B), teorik olarak a=b=0 olmali. Ancak 3 bagimsiz gamma ve 2 bagimsiz matrisin birlesimi, grilerin kucuk ama sifir olmayan a, b degerlerine dusmesine yol acar. NC, 256 noktalik bir LUT (lookup table) ile bu sapmayi hesaplar ve cikarir:

Code
// NC: pipeline sonunda gri duzeltmesi
// a_err(L), b_err(L): gri tonlarin sapmalari (PCHIP interpolasyon)
// Duzeltme: a -= a_err(L), b -= b_err(L)
// Sonuc: tum griler icin a=b=0 GARANTisi

Neden pipeline sonunda? NC'yi daha erken (ornegin M2'den hemen sonra) uygulamak felaket yaratir. Erken duzeltme ton acisini kaydirarak, sonraki asamalarin (H-K, chroma olcekleme, dark_L) tamamen farkli bir yoldan ilerlemesine neden olur. Uc renkler icin L degeri 0.94'ten 7.27'ye sapabilir. Pipeline sonunda uygulamak, onceki asamalarin orijinal tonu gormesini saglar ve sadece son cikisi duzeltir.

Asama 13: Rijit Rotasyon — -28.2 derece

Son asama, ab duzleminde sabit aciyla bir rotasyondur. Bu asamanin sifir serbest parametresi vardir — aci optimizasyon sonrasi minimax kriteri ile belirlenmistir. Neden STRESS'i degistirmiyor? Cunku mesafe formulundeki da^2 + db^2 terimi rotasyon altinda degismezdir (izometri). Bu bedava bir iyilesmedir:

  • Ton RMS hatasi: 25.9° → 16.1°
  • Ton maksimum hatasi: 48.4° → 20.2°
  • COMBVD (STRESS): degismiyor — kelimesi kelimesine 0.0000000000 fark

Terslenebilirlik: Her Asama Geri Alinabilir

Bir renk uzayinin pratik kullanimi icin Lab → XYZ yonu (ters donusum) en az ileri yon kadar onemlidir. "Bu L, a, b degerlerini hangi fiziksel isik uretir?" sorusunu yanitsiz birakamazsiniz. Helmlab'in 13 asamasinin her biri tam olarak terslenebilirdir:

  • Matris asamalari (1, 3) — Matrisin tersini carpmak yeterli: M1_inv * x.
  • Guc fonksiyonlari (2, 10) — Ters us: x^(1/gamma).
  • Toplama/cikarma asamalari (5, 6, 7, 8, 11, 12) — Ileri yonde eklenen degeri cikar.
  • Ton duzeltmesi (4) — Burada Newton iterasyonu gerekir. h' = h + f(h) denkleminde, verilen h' icin h'yi bulmak icin: h_{n+1} = h_n - (h_n + f(h_n) - h') / (1 + f'(h_n)). Tipik olarak 3-5 iterasyonda makine hassasiyetine yaklasir.
  • Chroma olcekleme (9) — Ton-bagimli carpan bilindiginde basit bolme.
  • Rijit rotasyon (13) — +28.2° ile geri dondur.

Round-trip hatasi (ileri + geri donusum) 1e-6 mertebesindedir — makine hassasiyetine yakin. Bu, Helmlab koordinatlarinin her zaman tekil bir fiziksel renge karsilik geldigini garanti eder.

72 Parametre: Cok Mu Fazla?

72 parametre ilk bakista korkutucu gorunebilir. Ama bu sayiyi baglamina oturtmak gerekir:

Parametre Sayisi Karsilastirmasi Model Parametre COMBVD STRESS CIE Lab 0 (sifir serbest) ~30.3 Oklab 18 ~27.5 CIEDE2000 5 (yama) 29.18 Helmlab 72 23.22

Onemli olan salt parametre sayisi degil, parametre basina deger ve asiri uyum riskidir. Uc noktayi inceleyelim:

Parametre basina deger

Helmlab 72 parametreyle STRESS'i 30.3'ten 23.22'ye dusurur — 7.1 puanlik iyilesme. Oklab 18 parametreyle 30.3'ten ~27.5'e dusurur — 2.8 puanlik iyilesme. Parametre basina STRESS iyilesmesi: Helmlab'da 0.099/param, Oklab'da 0.156/param. Oklab parametre basina daha verimli — ama mutlak performans Helmlab'da cok daha iyi. CIEDE2000'in 5 "yama" parametresi ise Lab'a eklenerek 30.3'ten 29.18'e duser — 0.22/param.

Analitik form: dogal duzenleyici

72 parametre bir sinir agi olsaydi asiri uyum ciddi bir risk olurdu. Ama Helmlab'in her parametresi belirli bir matematiksel fonksiyona baglidir: bir matris elemani, bir Fourier katsayisi, bir us degeri. Bu analitik form, parametre uzayini sinirlar. Rastgele egrilere uyum saglayamaz — sadece fiziksel olarak anlamli donusumleri ifade edebilir. Deney verimiz 3813 renk cifti (64.000+ gozlem) icerdiginden, parametre/veri orani 1:53'tur. Buna karsilik tipik bir sinir agi icin bu oran 1:10 bile buyuk sayilir.

Capraz dogrulama

Helmlab %80/%20 train/validation bolunmesiyle egitilir (seed=42). Validation gap yalnizca +1.11 STRESS puanidir — bu, modelin yeni verilere iyi genelleme yaptigini gosterir. Asiri uyumda bu fark cok daha buyuk olurdu.

Mesafe Formulunu: Minkowski + SL/SC

Renk uzayi yalnizca koordinatlari hesaplamaz — iki renk arasindaki algisal farki (deltaE) de olcmelidir. Helmlab'in mesafe formulu, basit Oklid mesafesinin otesinde duzeltmeler icerir:

Code
// Helmlab mesafe formulu
// Giris: iki rengin Lab koordinatlari

const dL = L2 - L1;
const da = a2 - a1;
const db = b2 - b1;

// Cift-bagimli agirliklar (SL, SC)
const L_avg = (L1 + L2) / 2;
const C_avg = (C1 + C2) / 2;
const SL = 1 + sl * (L_avg - 0.5) ** 2;  // koyu/acik ciftler
const SC = 1 + sc * C_avg;                // kromatik ciftler

// Minkowski mesafe (p ~= 2)
const DE = ((dL / SL) ** 2
          + wC * ((da / SC) ** 2 + (db / SC) ** 2))
          ** (p / 2);

// Son duzeltmeler
const result = (DE / (1 + c * DE)) ** q;

Bu formulun kilit bilesenleri:

  • SL: L ortalamasina bagimli agirlik. Koyu ve acik ciftlerde L farkinin algisal onemi degisir. SL bu farki yakalar.
  • SC: Chroma ortalamasina bagimli agirlik. Yuksek chroma'li ciftlerde krominans farklari daha az fark edilir. SC bunu modeller.
  • wC: Krominans/parlaklik dengesi. Insan gorusu L farklarina mi, renk farklarina mi daha duyarli? wC bu orani ayarlar.
  • p: Minkowski usteli. p=2 Oklid mesafesi, p<2 kucuk farklari buyutur. Optimize deger ~1.8.
  • q: Son us duzeltmesi (1.1). Buyuk farklarin algisal "doymasini" modeller.

SL ve SC parametreleri, CIEDE2000'in benzer mekanizmalarindan esinlenmistir — ama Helmlab'da bunlar Helmlab Lab koordinatlari uzerinde calisir, CIE Lab degil. Bu ince fark onemlidir: Helmlab'in Lab'i zaten H-K etkisini, ton duzeltmesini ve diger 10 asamayi icerdiginden, mesafe formulu daha temiz bir temel uzerinde calisir.

Pratikte: Ileri ve Geri Donusum

Code
import { Helmlab } from 'helmlab';

const hl = new Helmlab();

// Ileri donusum: sRGB -> Helmlab Lab
const lab = hl.fromSRGB(0.2, 0.6, 0.9);
console.log('L:', lab.L.toFixed(4));
console.log('a:', lab.a.toFixed(4));
console.log('b:', lab.b.toFixed(4));

// Geri donusum: Helmlab Lab -> sRGB
const rgb = hl.toSRGB(lab.L, lab.a, lab.b);
console.log('R:', rgb.r.toFixed(6));
console.log('G:', rgb.g.toFixed(6));
console.log('B:', rgb.b.toFixed(6));
// -> (0.200000, 0.600000, 0.900000)
// Round-trip hatasi: ~1e-6

// Mesafe olcumu
const dE = hl.deltaE(
  { r: 0.2, g: 0.6, b: 0.9 },
  { r: 0.3, g: 0.5, b: 0.8 }
);
console.log('deltaE:', dE.toFixed(4));

13 asama, kullanici icin tamamen saydamdir. fromSRGB ve toSRGB cagrilari 13 asamanin hepsini sirayla uygular (veya tersini). API basitligi, iclerin karmasikligini gizler — oldugu gibi olmali.

Sonuc: Karmasiklik Neden Onemli

Helmlab'in 13 asamasi keyfi karmasiklik degil. Her asama, insan gorsel sisteminin belirli bir ozelligini modeller:

  • Asamalar 1-3: Temel fizik → algi donusumu (matris + guc)
  • Asamalar 4-8: Parlaklik ve ton ince ayarlari (Fourier + polinom)
  • Asamalar 9-11: Chroma kalibrasyonu (Fourier + guc + L-baglantisi)
  • Asamalar 12-13: Yapisal garantiler (NC + rotasyon)

Her asama cikarilabilir ve cikarildiginda ne kaybedilecegi olculebilir. Hicbiri dekoratif degil. 72 parametre, 64.000+ insan gozlemi uzerinde optimize edilmis, capraz dogrulanmis, ve analitik form sayesinde asiri uyuma karsi korunmustur.

Sonuc: STRESS 23.22 — CIEDE2000'in 29.18'inin ve Oklab'in ~27.5'inin cok altinda. Pipeline karmasikligi, algisal dogruluk icin odenen bedeldir. Ve 10.3 KB'lik npm paketiyle:

Terminal
npm install helmlab

Kaynak kod: GitHub | Paket: npm

Bu yazi, Helmlab serisi 16 blog yazisinin yedincisidir. Bir sonraki yazida: Gamut Mapping — sRGB sinirlarinin disindaki renkleri nasil guvende tutarsaniz.

Görkem Yıldız

Helmlab, a family of perceptual color spaces for UI design systems (arXiv:2602.23010)

I'm Görkem, a UI/UX designer and engineer based in Ankara, leading the design team at [PushBrands](https://pushbrands.app/en), a Saudi UGC marketplace. I've spent over eight years designing and building digital products, and lately the systems underneath them: Helmlab, a color space trained on 64,000 human color judgments that now ships in Color.js; open-source tools for icons, sound and the terminal; and, as Orbit Design, Figma plugins with more than 100,000 users.

Book a call

Talk about color, design systems or Helmlab.

Saturdays 19:00–21:00 Istanbul time, on Google Meet.

Book a call