Estoy desarrollando una aplicación iOS en la que el usuario puede cambiar una parte del color de una imagen, digamos una Taza de té, al tocarla. Estoy usando el algoritmo Floodfill para rellenar los colores para que el usuario tenga que tocar la taza de té para cambiar su color. Eso está funcionando bien. Pero, el color final se ve un poco diferente que el color de reemplazo. Tengo algún problema para encontrar una mejor lógica para convertir el color del objeto (taza de té) al color seleccionado teniendo en cuenta su saturación & ligereza.Mejor lógica/algoritmo para colorear imágenes
Estoy usando la siguiente lógica para obtener el color del resultado. Estoy representando el color como (tono, saturación, valor).
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 copa antes de la pintura (en el círculo con el rojo).
El replacementColor seleccionado.
Copa después de pintar el replacementColor (en el círculo de color rojo).
Ver la imagen final anterior. Como estoy simplemente cambiando sólo la saturación tonalidad &, y no el valor del pixelColor, el color aplicado no se ve similar a la seleccionada replacementColor. La luminosidad de la imagen permanece inalterada.
Si cambio el valor junto con tonalidad & saturación como este,
resultColor = (new_h, new_s, new_v);
pixelColor = resultColor;
A continuación, la copa se vuelve plano de color, faltan las luces & tonos como este,
Quiero alguna idea para ajustar la lógica anterior para cambiar el color del píxel en un color de reemplazo coincidente. Puede ser una fórmula para derivar saturación & valor.
¿Quizás nos muestre un ejemplo de lo que piensa que está mal? No puedo ver un problema con la premisa básica. –
@Mark Ransom, Sí, he actualizado mi pregunta con las imágenes. – EmptyStack