Sto sviluppando un'applicazione iOS in cui l'utente può modificare una parte del colore dell'immagine, ad esempio una tazza da tè, toccandola. Sto usando l'algoritmo Floodfill per riempire i colori in modo che l'utente debba toccare la tazza da tè per cambiarne il colore. Funziona bene. Ma il colore finale sembra leggermente diverso dal colore di sostituzione. Ho qualche problema a trovare una logica migliore per convertire il colore dell'oggetto (Tea Cup) nel colore selezionato considerando la sua saturazione & luminosità.Migliore logica/algoritmo colorazione immagine
Sto utilizzando la seguente logica per ottenere il colore del risultato. Sto rappresentando il colore come (tonalità, saturazione, valore).
touchedColor = (tchd_h, tchd_s, tchd_v); // I am not using this now
pixelColor = (old_h, old_s, old_v);
replacementColor = (new_h, new_s, new_v);
resultColor = (new_h, new_s, old_v);
pixelColor = resultColor;
La coppa prima della verniciatura (cerchiato in rosso).
Il ReplacementColor selezionato.
Cup dopo la pittura ReplacementColor (cerchiato in rosso).
vedere l'immagine finale di cui sopra. Come sto solo cambiando solo il tonalità & saturazione, e non il valore di del pixelColor, il colore applicato non sembra simile a quello selezionato ReplacementColor. La luminosità dell'immagine rimane inalterata.
Se cambio il valore insieme tonalità & saturazione come questo,
resultColor = (new_h, new_s, new_v);
pixelColor = resultColor;
Poi la coppa diventa piatta di colore, mancano le luci & tonalità come questo,
Desidero qualche idea di modificare la logica precedente per modificare il colore dei pixel in un colore sostitutivo corrispondente. Può essere una formula per derivare il valore saturazione & valore.
Forse mostraci un esempio di ciò che pensi sia sbagliato? Non riesco a vedere un problema con la premessa di base. –
@Mark Ransom, Sì, ho aggiornato la mia domanda con le immagini. – EmptyStack