Contraste d'image HTML5 Canvas

J'ai écrit un programme de traitement d'image qui applique des effets au travers de HTML5 canvas pixel traitement. J'ai atteint le Seuil, Vintaging, et ColorGradient pixel manipulations, mais incroyablement, je ne peux pas changer le contraste de l'image!
J'ai essayé plusieurs solutions, mais j'ai toujours trop de luminosité dans l'image et à moins d'un effet de contraste et je n'ai pas l'intention d'utiliser toutes les bibliothèques Javascript depuis que je suis en train de réaliser ces effets en mode natif.

La base de la manipulation de pixels 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];
}

La manipulation de pixels exemple

Valeurs sont en mode RVB, ce qui signifie data[i] est la couleur Rouge. Donc, si des données[i] = data[i] * 2; la luminosité sera augmentée à deux fois pour le canal Rouge du pixel. Exemple:

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;
}

*Note: je ne suis pas demander à vous les gars pour compléter le code! Que serait une faveur! Je demande un algorithme (même les Pseudo-code) qui montre comment le Contraste dans la manipulation de pixels, c'est possible!
Je serais heureux si quelqu'un peut fournir un bon algorithme pour le Contraste de l'Image en HTML5 canvas.

source d'informationauteur Schahriar SaffarShargh