Ho implementato diverse funzioni per convertire sRGB nello spazio colore CIE-L*a*b*.Come distinguere quale colore è "inferiore" e/o "più alto" nello spazio colore CIE-L * a * b * per il dithering ordinato?
Ora, mi piacerebbe usarlo per il dithering, ma non sono sicuro di distinguere esattamente quale colore è il colore "inferiore" e quale è il colore "più alto".
Quando si dithering in uno spazio colore unidimensionale (scala di grigi) le cose sono facili. Quando si utilizza il dithering di diffusione degli errori, calcolo il valore di scala di grigi più vicino dalla mia tavolozza e aggiungo l'errore ai pixel circostanti, a seconda del tipo di matrice di dithering che utilizzo (ad esempio Floyd-Steinberg). Poiché questo è unidimensionale, è piuttosto facile, c'è solo questo valore. Ma ora ho questo spazio tridimensionale a colori, dovrei semplicemente aggiungere l'errore a ciascuna coordinata individualmente?
(Questo è l'unico modo in cui ha senso per me, a questo punto.)
Quando dithering con una matrice ordered dither, le cose si fanno ancora più complicato. Le matrici di dither ordinate definiscono un valore di soglia. Per questo, ho bisogno di conoscere il valore di pixel "inferiore" e il valore di pixel "più alto" del mio pallet, in relazione al mio pixel corrente che sto per dithering. Ora, calcolo la distanza da entrambi i pixel, il valore di soglia della matrice di retinatura decide dopo quale valore tra quelli verso i pixel vicini, il pixel è retinato al pixel inferiore o al pixel più alto.
(L'implementazione effettiva sarebbe ovviamente più ottimale del calcolo di quella, usando una matrice scelta in modo ragionevole per i valori di colore della scala di grigi nel mio pallet.Inoltre, cose come scegliere il pallet con valori di colore uniformemente distanziati, ecc. .)
Questo è - di nuovo - abbastanza facile in uno spazio cromatico unidimensionale. ma in CIE-L * a * b *, non esiste un valore "superiore" o "inferiore" in quanto tale.
Utilizzare solo la luminanza per applicare la matrice di soglia a, sembra piuttosto scorretto, potrei avere due colori con la stessa luminanza nel mio pallet, quindi cosa?
L'applicazione di [differenza di colore] (https://en.wikipedia.org/wiki/Color_difference) nello spazio colore LAB potrebbe aiutarti a impostare la soglia in base al confronto tra colori. Abbassare il valore 'delta e' più strettamente due colori sono correlati. –
@SarthakSinghal Beh, sì, sto già utilizzando ΔE per calcolare le distanze dei colori. Ma questo non aiuta. da solo, perché ho bisogno di avere la distinzione tra "superiore" e "inferiore". Se eseguissi semplicemente il dithering dal colore più vicino al secondo colore più vicino, potrei dither "down" a una luminanza inferiore, ecc. Che sarebbe scorretta. – polemon