Clarification sur le fonctionnement des transformations ColorMasortingx

Je suis en train de travailler sur une application de traitement d’images (pour le plaisir) et j’ai du mal à comprendre le fonctionnement des transformations ColorMasortingx. Je connais les bases des transformations linéaires / affines, et je peux très bien reproduire des exemples en ligne, mais j’aimerais comprendre parfaitement pourquoi quelque chose fonctionne plutôt que d’être simplement satisfait de son efficacité.

Par exemple, une simple transformation sur une image pour produire son négatif (chaque couleur est convertie en son complémentaire respectif) utilise la masortingce suivante:

[-1, 0, 0, 0, 0] [0, -1, 0, 0, 0] [0, 0, -1, 0, 0] [0, 0, 0, 1, 0] [1, 1, 1, 0, 1] 

Je comprends que -1 est le cosinus de 180 degrés, qui est la rotation nécessaire pour “retourner” une couleur à sa complémentarité, mais ce que je ne comprends pas, c’est comment un vecteur de couleur peut être multiplié par rapport à la masortingce ci-dessus et produire la complémentarité correcte vecteur.

Par exemple, si un pixel a le vecteur de couleur de [247, 255, 0, 255, 1] ​​(en utilisant l’espace RGBAW), la multiplication par rapport à la masortingce ci-dessus produit [-247, -255, 0, 255, 1] , mais ce n’est pas correct puisque la couleur complémentaire réelle de ce qui précède est [8, 0, 255, 255, 1].

Il me manque quelque chose d’évident ici et je suis heureux d’admettre que je ne suis pas tout à fait sûr de ce que je fais 🙂 Le vecteur de couleur en cours de transformation est-il représenté dans un autre système de coordonnées? (par exemple pas 0-255)

Si quelqu’un pouvait m’aider à fournir le “chaînon manquant” de ma compréhension, je vous en serais très reconnaissant.

modifier

Je viens de découvrir que la masortingce suivante fonctionne également et est en fait mathématiquement intuitive (elle produit le vecteur correct).

 -1 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 1 1 1 1 0 0 0 0 0 1 

Ma nouvelle question est donc la suivante: pourquoi ces deux masortingces fonctionnent-elles? Ce dernier me fournit la solution la plus satisfaisante car je peux comprendre pourquoi cela fonctionne dans une perspective algébrique. La ligne quatre est-elle utilisée pour la mise à l’échelle? Et si oui, pourquoi la mise à l’échelle ajoute-t-elle 255? D’où vient cette valeur?

Désolé si ce sont des questions vraiment stupides, j’essaie de comprendre cela.

Vous avez raison de dire que la ligne du bas est pour la traduction. Dans son commentaire, Hans affirme que le facteur d’échelle de 255 est en cause, ce qui est probablement source de confusion pour vous. Une façon de voir cela est que toutes les valeurs ARGB sont d’abord divisées par 255, puis que la multiplication de masortingce est appliquée et que toutes les valeurs sont ensuite multipliées par 255 pour obtenir les valeurs ARGB correctes. Une autre façon de voir les choses est de penser que les valeurs de traduction sont 255 aussi grandes. Vous arriverez au même résultat dans les deux sens.

 ((247/255) * -1 + 1) * 255 = 8 or 247 * -1 + 255 = 8