Challenge CIFilter
Bonjour aux barWomen&Men,
je ne suis pas venu depuis une éternité... Pb d'addiction !!!
Je me permet de solliciter les collègues swifteurs, pour un sujet très très lourd, à mon sens, et qui, de plus, me passionne,
vu mon premier métier de photographe (colorimétrie, sensitométrie, et j'en passe et des meilleurs).
Voici ma page de référence pour la discussion :
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci
Je dois travailler une image relativement neutre (des dents) - Pas de couleurs, à priori.
L'utilisateur doit manipuler 3 paramètres : Lumière (Brightness), Saturation, et Couleur (Tint).
Je n'ai pas le droit d'utiliser des sliders, car on a un nuancier en référence, et donc des valeurs précises (Cela ne pose aucun problème).
Concernant la lumière et la saturation, j'ai résolu mon problème.
Mais pour la couleur, c'est super chaud. Je m'explique :
Déjà, il faut savoir que je dois avoir 3 couleurs possibles - Dans l'ordre croissant : Jaune orangé plutôt jaune - Jaune orangé - Jaune orangé plutôt rouge
Disons pour simplifier : jaune - orange - orange rouge
J'ai donc naturellement commencé avec "CIHueAdjust", mais cela n'est pas très probant. Trop fade et pb de positionnement dans la roue des couleurs.
Je me suis ensuite concentré avec acharnement sur "CITemperatureAndTint", et là : chaud bouillant (excitant, de surcroit).
Y'a 2 paramètres : inputNeutral et inputTargetNeutral avec chacun, deux paramètres. Ça fait quatre variables.
Par ex :
filter.setValue(CIVector(x: 16000, y: 1000), forKey: "inputNeutral")
filter.setValue(CIVector(x: 1000, y: 500), forKey: "inputTargetNeutral")
J'ai lu à peu près tout ce que j'étais capable de trouver sur le web (j'ai plein de bookmarks intéressants pour ceux que ça intéresse).
Je n'ai pratiquement rien trouvé (même chez Apple), concernant une correspondance entre les valeurs de ces 4 paramètres et les résultats obtenus.
En gros, le pb que j'ai, est que, les couleurs que j'obtiens (dans la bonne partie du spectre) sont trop "vives", et en plus de nombreux détails de l'images disparraissent.
Voici ce que j'ai de mieux pour l'instant :
Pour inputNeutral (Les 3 teintes exigées)
indexToValueX = [6625, 6600, 6575]
indexToValueY = [426, 428, 430]
Pour inputTargetNeutral
let inputVector = CIVector(x: indexToValueX[indexRond], y: indexToValueY[indexRond])
let targetVector = CIVector(x: 1000, y: 565)
Donc en gros j'ai deux questions en une :
Comment atteindre une teinte avec une intensité plus faible et sans perte des détails ?
Merci d'avance pour le challenge…
Réponses
CITemperatureAndTint va typiquement servir à régler la balance des blancs.
CIHueAdjust fait une rotation de la couleur sur le cercle chromatique. En pratique, c'est souvent pour rechercher un résultat artistique.
Peux-tu nous expliquer le but final ?
Merci Céroce. Oui je sais tout ça.
Le but final est de simuler une couleur (T S L) en référence à un nuancier prédéfini.
Je pense que "CIWhitePointAdjust" avec des "UIColor(hue: 48/360, saturation: 0.5, brightness: 1, alpha: 1)" serait l'idéal. Je travaille là-dessus.
Ok. Redemande si tu n'y arrives pas.
Merci Céroce.
Ok. Je reviendrais...