Le bogue violet de Sim Daltonisme

En 2016, j’ai converti l’algorithme de filtre de Sim Daltonisme 1.0 en un « shader » OpenGL pour qu’il puisse rouler sur un processeur graphique avec une meilleure performance. Ceci a aussi rendu possible l’application iOS qui filtre en temps réel les images de la caméra. Un bogue c’est glissé dans le filtre cependant.

Avec une roue des couleurs filtrée, on peut observer qu’une région dans les bleus saturés devient violette. Ceci ne fait aucun sens visuellement : la lumière violette est un mélange de bleu et de rouge, et cette zone violette apparaît même pour la protanopie (pas de cône rouges). Cette couleur n’apparaissait pas non plus ni avec la version 1, ni sur le Color Laboratory d’où l’algorithme du filtre est tiré.

J’ai ressorti le code de la version 1 pour tenter de trouver des différences. Après avoir cherché des différences algorithmiques sans succès, j’ai tenté de ramener certaine valeurs à l’intérieur de la plage 0…1 où elles étaient supposées rester ; théoriquement le résultat des calculs ne devrait pas sortir de cette plage, mais ceci ne tient pas compte des erreurs d’arrondi dans les calculs de nombres à virgule flottante. Les processeurs graphiques sont très rapides, mais sacrifient parfois de la précision pour gagner en vitesse. Et ceci a réglé le problème.

Il y a donc maintenant une nouvelle version de Sim Daltonisme avec un filtre corrigé dans les applications Mac et iOS. Merci à Lisa Charlotte Rost pour m’avoir signalé le bogue après avoir comparé avec d’autre outils de simulation.


  • © 2003–2020 Michel Fortin.