Helmlab

**Helmlab**, 64.000'den fazla bireysel insan renk algısı gözlemi üzerinde eğitilmiş, açık kaynaklı bir renk uzayı ailesidir. Python ve JavaScript/TypeScript kütüphaneleri olarak kullanılabilir. MIT Lisansı ile dağıtılmaktadır. Ölçüm uzayı (MetricSpace), COMBVD veri seti üzerinde CIEDE2000 standardından %20,1 daha düşük STRESS değeri elde etmektedir; üretim uzayı (GenSpace) ise Oklab'dan 6 kat daha iyi ton doğruluğu sunmaktadır.

## Mimari

Helmlab, farklı amaçlara yönelik optimize edilmiş iki renk uzayından oluşmaktadır:

### MetricSpace

MetricSpace (72 parametre), algısal renk farkı ölçümü için optimize edilmiş 13 aşamalı bir dönüşüm hattı kullanır:

`XYZ → M₁ → γ → M₂ → Ton düzeltme → H-K → L → C → HL → NC → φ → Lab`

CIE XYZ üçlü uyarıcı değerlerini algısal Lab koordinatlarına dönüştüren bu hat; ton düzeltmesi, Helmholtz-Kohlrausch etkisi modellemesi (parlaklığın kroma bağımlılığı, veriden öğrenilmiş), kroma ölçekleme, nötral düzeltme ve rijit dönme (φ = −28,2°) aşamalarını içerir. Nötral düzeltme aşaması, gri tonlarının kromatikliğini C XYZ → M₁ → γ = ⅓ → M₂ → NC → Lab

Phase1H ile optimize edilmiş M₁/M₂ matrisleri ve paylaşılan küp kök sıkıştırması (γ = ⅓) kullanır. Zenginleştirme aşaması içermez; saf doğrusal cebir hattı sayesinde hızlı ve terslenebilirdir. Ton doğruluğu Oklab'dan 6 kat daha iyidir (RMS 5,2° karşı 30,1°). `gradient()` fonksiyonunda CIEDE2000 yay uzunluğu yeniden parametrizasyonu ile her renk çiftinde algısal olarak eşit adımlar üretir.

## Veri seti ve metodoloji

### COMBVD veri seti

COMBVD, 6 bağımsız psikofizik deneyden derlenen 3.813 renk çiftinden oluşan birleşik bir görsel fark veri setidir:

* Luo ve Rigg (1986)
* RIT-DuPont
* Witt
* Leeds
* BFD
* He ve diğerleri (2022)

Toplamda 64.000'den fazla bireysel insan gözlemi içermektedir. Her deneyde gözlemciler, kontrollü D65 aydınlatma altında renk çiftlerini incelemiş ve algıladıkları farkı derecelendirmiştir.

### STRESS ölçütü

STRESS (Standardized Residual Sum of Squares — Standardize Artık Kareler Toplamı), CIE tarafından renk farkı formüllerini değerlendirmek için kullanılan standart ölçüttür. Her renk çifti *i* için ΔVi insan görsel farkını, ΔEi ise modelin tahmin ettiği uzaklığı gösterir. STRESS, en uygun ölçek faktörü *F*yi bularak artıkları en aza indirir:

\text{STRESS} = 100 \times \sqrt{\frac{\sum (\Delta E_i - F \cdot \Delta V_i)^2}{\sum (\Delta E_i)^2}}

Ölçek: 0 = mükemmel uyum, 100 = korelasyon yok.

### Optimizasyon

MetricSpace'in 72 parametresi, COMBVD eğitim kümesi üzerinde L-BFGS-B algoritması ile 8 rastgele başlangıç noktasından optimize edilmiştir. Veri %80 eğitim / %20 test olarak bölünmüştür (seed = 42). Modelin analitik yapısı — her işlemin bilinen bir matematiksel fonksiyon olması — yapısal bir düzenlileştirici görevi görmektedir.

5 katlı çapraz doğrulama, ortalama STRESS ≈ 23,5 ile modelin eğitim kümesinin ötesinde genelleştiğini doğrulamaktadır. Bootstrap güven aralıkları (10.000 iterasyon): Helmlab %95 GA [22,50 – 23,93], CIEDE2000 %95 GA [27,64 – 30,84]. İki aralık örtüşmemektedir (p gradient() fonksiyonu, ≈ %0 CV değerine CIEDE2000 yay uzunluğu yeniden parametrizasyonu ile ulaşmaktadır. Bu algoritma, adımları eşit algısal aralıklarla yeniden dağıtır. Oklab ve CIE Lab değerleri, çoğu kütüphanenin kullandığı basit doğrusal interpolasyonu yansıtmaktadır. Aynı yeniden parametrizasyon tekniği herhangi bir renk uzayına uygulanabilir; Helmlab bu tekniği yerleşik olarak sunmaktadır.

## Özellikler

* Algısal renk farkı ölçümü (`deltaE`)
* Akromatik garanti — gri tonları nötral düzeltme ile C < 10⁻⁶ kromatikliğe haritalanır
* Gömülü Helmholtz-Kohlrausch etkisi — parlaklık, kroma bağımlıdır ve veriden öğrenilmiştir
* Rijit dönme ile ton iyileştirmesi (RMS 16,1°), metrik performansa sıfır maliyet
* WCAG kontrast oranı hesaplama ve otomatik düzeltme
* CIEDE2000 yay uzunluğu yeniden parametrizasyonu ile gradient üretimi
* Tailwind CSS tarzı 50–950 semantik palet üretimi
* sRGB ve Display P3 gamut haritalama
* Koyu/açık mod uyarlaması
* Token dışa aktarımı (CSS, Android XML, iOS Swift, JSON)

## Teknik detaylar

JavaScript paketi yaklaşık 12 KB (gzip) boyutundadır, harici bağımlılığı yoktur ve ESM + CJS çift çıktı ile tam TypeScript tip tanımları içerir. CDN üzerinden de kullanılabilir. Python paketi NumPy ve SciPy gerektirmektedir.

Proje, 337 otomatik testle doğrulanmaktadır (233 Python + 104 JavaScript).

## Kaynakça

## Dış bağlantılar

* Resmî web sitesi
* Dokümantasyon
* GitHub deposu
* arXiv makalesi
* npm paketi
* PyPI paketi