Merci pour les liens !
Sinon, la conversion RGB->niveaux de gris n'est pas linéaire, tout simplement parce que la perception au niveau de la luminosité n'est pas la même pour les différentes composantes (le vert au maximum semble "en général" plus lumineux qu'un bleu au maximum). En fonction des individus, donc des sensibilités, des environnements, des prises de vue, une pondération donnera de meilleurs résultats.
Un truc que je peux te suggérer est de faire un ajustement automatique des niveaux. En gros tu cherches sur toute l'image le point noir (RGB minimum) et le point blanc (le plus grand), ensuite tu pondères tous les points de l'image en fonction de l'étendue qui en résulte, avec une simple règle de trois.