Questo è legato a una domanda che ho posto su tex.stackexchange , che ha un aspetto colorato. Il risultato di questa domanda è la seguente immagine:
Ho disegnato una serie di quadrati grigi a sinistra, con un ramo rosso in partenza a destra. L'obiettivo è avere diversi quadrati rossi con una saturazione diversa, ma tutti con lo stesso valore di grigio. Nel modello di colore hsv, hanno tutti lo stesso v
, ma quando converto l'immagine in scala di grigi usando Gimp, non vengono convertiti nello stesso grigio. Inoltre l'impressione visiva è che i quadrati rossi a destra siano più scuri di quelli a sinistra.
Come posso, dato un certo grigio, calcolare i colori con una certa tonalità e lo stesso valore di grigio (o, ancora meglio, con la stessa impressione di grigio )? I colori utilizzati nell'immagine sono tutti calcolati, quindi preferisco soluzioni che includano anche calcoli.
Potrei aver usato termini sbagliati qui - Sono un ingegnere meccanico, quindi per favore correggimi dove appropriato, o chiedi chiarimenti.
Il suggerimento di utilizzare lo spazio colore Lab mi ha portato ad alcune conclusioni:
Posso usare il
L
valore del modello Lab per impostare una sorta di valore di grigio per colori diversi. Nel modello hsv questo èv
. Non sono sicuro di poter effettivamente confrontare quelli, ma lo farò fino a quando qualcuno non si lamenta.Nel modello hsv posso anche impostare un po 'di "colore di base" (una tonalità), che non trovo nel modello Lab.
Nel modello hsv, ho 2 costanti (nell'immagine sopra:
h
= 0,v
= 0,375) e una variabile (s
).Fino a questo punto, ho solo una costante nel modello Lab. Questo non è abbastanza per generare qualcosa di simile a quello che ho già fatto con il modello hsv.
Immagino sia tempo di esperimenti.
Fatto! Dopo aver eseguito il codice di conversione, è stato semplice. Il primo passo è stato definire il "bersaglio rosso" sulla destra. Ho calcolato RGB2Lab (255,0,0) e modificato il valore L del risultato nella L desiderata nella figura (L = 62,5). I colori vengono calcolati usando un'interpolazione lineare nello spazio Lab da (L, 0,0) a (L, aTarget, bTarget). Il risultato:
Grazie!