SieveColorSpace

Sieve Color Space (SCS)

English

Un substrat géométrique pour la couleur dérivé d’une seule hypothèse (s = 1/2) sur un système dynamique de gaps entre nombres premiers — le cadre de la Théorie de la Persistance. SCS est proposé comme une couche géométrique principielle dans une architecture d’apparence des couleurs factorisée, aux côtés des outils existants (CIECAM02, CIEDE2000, iCAM, CAM02-UCS, JzAzBz), et non comme un remplacement.

Ce qui est dérivé sans paramètre ajusté : le simplexe à trois canaux, l’ordre γ₃ > γ₅ > γ₇ qui coïncide avec l’ordre des bandes passantes des cônes L>M>S, la métrique de Fisher sur le simplexe, les géodésiques de Bhattacharyya et Fisher–Bernoulli, et la règle de somme saturation–luminance.

Ce qui reste ajusté / mesuré : les métriques hybrides de différence de couleur (SCS+CIECAM02 et ΔE_SCS00) utilisent des poids régressés par Ridge sur la géométrie dérivée. L’article les étiquette systématiquement comme des hybrides. L’adaptation chromatique, la sensibilité spectrale au-delà de la linéarisation HPE, les conditions d’observation et le flare ne sont pas modélisés par SCS (voir Portée et limites dans l’article) ; CIECAM02 et CIEDE2000 restent les outils appropriés là où ces effets dominent.

Démonstration en ligne · PDF anglais · PDF français · Leaderboard — benchmark ouvert, pull requests bienvenues · Résultats V4 fMRI — validation biologique


Reproduire les chiffres du papier

Chaque affirmation du papier est reproductible depuis un script dans scripts/. Clone propre + pip install -e . + ~1 min de CPU donnent les quatre nombres clés :

# 1. Orientation des ellipses MacAdam — SCS gagne 18/25, RMS Δθ = 37,8°
python3 scripts/macadam_test.py

# 2. Différence de couleur SCS pure sur COMBVD — r = 0,492 (single-feature, zéro poids ajusté)
python3 scripts/delta_e_scs.py

# 3. Hybride SCS + CIECAM02 sur COMBVD — r = 0,824 (6 poids ajustés)
python3 scripts/scs_cam02_hybrid.py

# 4. ΔE_SCS00 vs CIEDE2000 sur COMBVD — r = 0,893 vs 0,878, p < 0,0001
python3 scripts/delta_e_scs00.py

# 5. Poids des canaux V4 fMRI — L−M = 0,37 vs prédiction SCS γ₃/Σγ = 0,385
python3 scripts/v4_summary.py      # reproduction rapide depuis la CSV pré-calculée
python3 scripts/v4_refined_analysis.py  # pipeline complet (nécessite OpenNeuro ds005521)

Chaque script imprime son résultat à côté de la valeur citée dans le papier. Si votre exécution donne un résultat différent, ouvrez une issue — nous voulons le savoir.


Performance honnête sur COMBVD (3813 paires, validation croisée 5-fold)

Méthode Poids ajustés r vs CIEDE2000
SCS pur (feature unique delta_e_scs) 0 0,492 base géométrique
CIELAB 3 0,755 –14 %
SCS pur + Ridge (d_lum, d_chrom) 2 0,642 –27 %
Hybride SCS + CIECAM02 6 0,824 –6 %
CIEDE2000 5 0,878 référence
ΔE_SCS00 (CIEDE2000 + Fisher–Bernoulli) 5 0,893 +1,8 %, p < 0,0001

La métrique SCS pure (zéro paramètre ajusté) est en dessous de CIELAB globalement. Elle gagne dans deux régimes spécifiques :

La valeur de SCS comme métrique opérationnelle est celle d’un canal d’information additif au-dessus des modèles corticaux (CIECAM02, CIEDE2000) — jamais comme remplacement.

La formule ΔE_SCS00 :

ΔE_SCS00 = w₀ + w₁·ΔE₀₀ + w₂·d_lum + w₃·ΔE₀₀² + w₄·ΔE₀₀·d_lum + w₅·d_lum²

d_lum = 2 |arcsin(√ℓ₁) − arcsin(√ℓ₂)| est dérivé de s = 1/2 sans paramètre ajusté. Les six poids w₀…w₅ sont régressés par Ridge sur COMBVD (α = 1, 5-fold CV, graine 42). Le terme clé est l’interaction ΔE₀₀ · d_lum — de l’information que le modèle cortical seul ne porte pas.


Installation

pip install -e .

Ou depuis PyPI :

pip install scs

Dépendances requises : numpy, scipy, pandas, scikit-learn, colour-science (pour CIECAM02 dans l’hybride). matplotlib pour les figures.


Démarrage rapide

from scs import delta_e, to_scs, fisher_luminance, gft_check

# Différence de couleur (géodésique pure, 0 paramètre)
d = delta_e([0.95, 1.0, 1.09], [0.60, 0.50, 0.30])
print(f"ΔE_SCS = {d:.4f}")

# XYZ → coordonnées SCS
c = to_scs([0.95, 1.0, 1.09])
print(f"ℓ={c.ell:.2f}  S={c.S:.3f} nats  θ={c.hue:.0f}°")
print(f"π = ({c.pi[0]:.3f}, {c.pi[1]:.3f}, {c.pi[2]:.3f})")

# Géodésique de luminance Fisher–Bernoulli (utilisée dans ΔE_SCS00)
d_lum = fisher_luminance(Y1=50, Y2=45)

# Depuis des valeurs CIELAB
from scs import delta_e_lab
d = delta_e_lab(50, 25, 10, 52, 28, 8)

# Règle de somme S + L (identité générique sur toute distribution à 3 issues)
S, L, total, err = gft_check([0.4, 0.35, 0.25])
print(f"S + L = {total:.6f} (err = {err:.1e})")

Résumé API

Toutes les quantités information-théoriques (S, L, gft_check) sont en nats (log naturel), conformément à la convention du papier. S + L = log 3 ≈ 1,0986.

Fonction Rôle
delta_e(xyz1, xyz2) Différence de couleur SCS (géodésique pure, 0 paramètre)
delta_e_lab(L1,a1,b1, L2,a2,b2) Idem depuis CIELAB
to_scs(xyz) XYZ → SCSColor(ell, S, hue, pi)
fisher_luminance(Y1, Y2) Géodésique Fisher–Bernoulli d_lum
saturation(pi) Divergence de Kullback–Leibler par rapport à uniforme, en nats
luminance_entropy(pi) Entropie de Shannon H(π), en nats
gft_check(pi) Vérifier S + L = log 3

Constantes (toutes dérivées de s = 1/2 à μ* = 15)

Constante Valeur Source
MU_STAR 15 Point fixe unique (Théorème T5)
GAMMAS (0,808 ; 0,696 ; 0,595) Dimensions anomales à μ* = 15
PRIMES (3, 5, 7) Nombres premiers actifs
Q_REL 13/15 Branche sommet de la bifurcation
Q_THERM e^(−1/15) Branche arête
W_LUM 3/4 Poids luminance N/(N+1)
W_CHROM 1/4 Poids chromaticité 1/(N+1)

Scripts

Tous les scripts sont dans scripts/. Ils résolvent les chemins de données depuis la racine du repo.

Script Rôle Claim du papier reproduite
scs.py Module cœur : coordonnées, métriques, règle de somme, auto-test
scs_companion.py Quantités PT, vérification numérique, génération de figures
delta_e_scs.py Différence SCS pure (métrique combinée : Fisher + Fubini–Study + bifurcation) r = 0,492 baseline
delta_e_scs00.py Hybride ΔE_SCS00 = CIEDE2000 + Fisher–Bernoulli r = 0,893 vs 0,878, p < 0,0001
scs_cam02_hybrid.py Fitter hybride SCS + CIECAM02 (Ridge, 5-fold CV) r = 0,824
macadam_test.py Validation ellipses MacAdam (25 points) avec métrique combinée 18/25 victoires, RMS 37,8°
v4_summary.py Reproduction poids canaux V4 depuis CSV pré-calculée L−M ≈ 0,37 vs γ₃/Σγ = 0,385
v4_neural_extraction.py Extraction V4 fMRI complète (requiert OpenNeuro ds005521) Génère v4_bold_response.csv
v4_refined_analysis.py Mapping Ridge V4 → canaux SCS L−M = 0,373 (écart 3,2 %)
v4_hybrid_model.py Canaux opposants V4 comme proxy de CAM02 dans l’hybride COMBVD r = 0,675 (V4-based, en dessous de CAM02 plein)
v4_analysis_plots.py Figures V4
scs_ciede2000_analysis.py Analyse comparative SCS vs CIEDE2000
exploratory/ R&D brouillon : model20_deep_analysis, push_beyond_ciede2000, pt_matrix Non-structurant

Démos interactives

Neuf modules HTML autonomes (bilingues FR/EN, thème sombre, aucune étape de build) sont dans demonstration/. Ouvrez demo.html comme index, ou testez en ligne : index de démo.

# Module Ce qu’il montre
01 Lire une couleur SCS Lecture interactive ℓRGB ↔ polaire (ℓ, S, θ) sur le simplexe chromatique
02 Le coucher de soleil HSL vs SCS sur une scène contrastée + cartes budget locales avec S + L = log 3 exact
03 Protection des tons chair Boost saturation HSL vs boost radial sur le simplexe SCS avec protection corridor peau
04 Equilibrium Axes α / Y décorrélés : un slider déplace saturation et luminance en sens opposés
05 Préservation chromatique des hautes lumières SCS préserve π exact et réduit seulement Y ; HSL classique désature vers le blanc
06 Séparation de dominante SCS déplace π vers U sur le simplexe à Y constant ; classique soustrait RGB (altère Y)
07 Noir et blanc depuis le SCS Décalage tonal S·cos(θ) ajouté à Y : chaudes éclaircissent, froides assombrissent (équivalent filtre orange)
08 SCS vs CIELAB — région sombre Échelle sombre, courbes de sensibilité, et référence r = 0,625 vs 0,558 sur COMBVD
09 SCS vs OkLab Rails d’interpolation + règle de somme S + L = log 3 + courbes CIELAB / OkLab / SCS superposées

Chaque module utilise le pipeline SCS canonique (sRGB → XYZ → LMS via HPE → simplexe γ-pondéré) — les maths des démos correspondent au papier, pas à des heuristiques HSL. Le View Source de n’importe quel module montre les mêmes fonctions MU_STAR, GAMMAS, M_HPE, lmsToSimplex, piToRgbExact que le SDK Python.


Article

Le papier est autonome : l’appendice fournit les dérivations de tous les résultats de Théorie de la Persistance utilisés (T1 transitions interdites, s = 1/2, règle de somme, bifurcation sommet–arête, holonomie, dimensions anomales, nombres premiers actifs, point fixe). Un lecteur n’a pas besoin d’adopter la PT comme tout cohérent pour évaluer les claims SCS — voir le paragraphe explicite « Lire cet article sans s’engager sur le cadre plus large » dans l’introduction.


Chaîne de dérivation

s = 1/2  →  T₁ transitions interdites  →  T₃ = antidiag(1, 1)
         →  T₅  →  μ* = 15,  premiers actifs {3, 5, 7}
         →  holonomie  →  sin² θ_p,  α_EM ≈ 1/137
         →  Rydberg → Balmer  →  fenêtre visible 380–656 nm
         →  hiérarchie γ_p : γ₃ > γ₅ > γ₇   (coïncide L>M>S)
         →  métrique de Fisher (Čencov, unique à constante près)  →  SCS

Problèmes ouverts (collaboration sollicitée)

L’article énonce trois prédictions falsifiables, chacune traitable en trois mois d’expérience. Les esquisses de protocoles et les crochets de préenregistrement sont dans leaderboard.md.

Le papier signale aussi explicitement les directions où les auteurs ont besoin d’aide (adaptation chromatique, modélisation de l’observateur individuel, design de protocoles psychophysiques). Correspondance, réplications, contre-expériences et forks sont activement sollicités — ouvrez une issue ou une PR.


Documentation


Références

Y. Senez, « The Sieve Color Space: A First-Principles Color Space from the Sieve of Eratosthenes » (2026). PDF · Zenodo

Y. Senez, « Persistence Theory: Mathematical Foundations of Prime Gap Dynamics », préprint (2026). Zenodo

Littérature adjacente citée dans le papier : Wyszecki & Stiles (2000), Vos & Walraven (1972), Derrington–Krauskopf–Lennie (1984), MacLeod–Boynton (1979), Wuerger et al. (2002), Koenderink (2010), Fairchild (2013), Hofer et al. (2005), Amari (1985), Fairchild & Johnson iCAM (2004), Luo et al. CAM02-UCS (2006), Safdar et al. JzAzBz (2017), Conway et al. (2025, OpenNeuro ds005521).

Licence

MIT — Yan Senez — www.dityan.com