Contraste de imagen de lienzo HTML5

He estado escribiendo un programa de procesamiento de imágenes que aplica efectos a través del procesamiento de píxeles de lienzo HTML5. He logrado las manipulaciones de píxeles Thresholding, Vintaging y ColorGradient, pero increíblemente no puedo cambiar el contraste de la imagen. He probado varias soluciones, pero siempre tengo demasiado brillo en la imagen y menos efecto de contraste.y no planeo usar ninguna biblioteca de Javascript ya que estoy tratando de lograr estos efectos de forma nativa.

El código básico de manipulación de píxeles:

<code>var data = imageData.data;
for (var i = 0; i < data.length; i += 4) {
 //Note: data[i], data[i+1], data[i+2] represent RGB respectively
data[i] = data[i];
data[i+1] = data[i+1];
data[i+2] = data[i+2];
}
</code>
Ejemplo de manipulación de píxeles.

Los valores están en modo RGB, lo que significa que los datos [i] son ​​el color rojo. Entonces, si datos [i] = datos [i] * 2; el brillo se aumentará a dos veces para el canal rojo de ese píxel. Ejemplo:

<code>var data = imageData.data;
for (var i = 0; i < data.length; i += 4) {
 //Note: data[i], data[i+1], data[i+2] represent RGB respectively
 //Increases brightness of RGB channel by 2
data[i] = data[i]*2;
data[i+1] = data[i+1]*2;
data[i+2] = data[i+2]*2;
}
</code>

*Nota: ¡No les estoy pidiendo a ustedes que completen el código! ¡Eso sería un favor! Estoy pidiendo un algoritmo (incluso pseudo código) que muestre cómo es posible el contraste en la manipulación de píxeles. Me alegraría si alguien pudiera proporcionar un buen algoritmo para Contraste de imagen en el lienzo HTML5.

Respuestas a la pregunta(7)

Su respuesta a la pregunta