suite à une récente micro-polémique à propos de la meilleure
façon de corriger le contraste d'une image avec un logiciel
de traitement d'image (PhotoShop, Gimp même combat), je me suis
penché attentivement sur la question afin d'essayer de bien
comprendre ce que font ces logiciels.
Comme je n'ai rien trouvé dans la FAQ (http://frp.parisv.com/index.html)
à ce sujet je vous communique le fruit de mes réflexions.
Certains trouveront ce texte très basique, d'autres trop
didactique. Inutile de le faire remarquer. En revanche si j'ai commis
des erreurs ou des imprécisions n'hésitez pas.
Ce que je vais raconter concerne une image noir et blanc avec des
niveaux de gris codés dans l'intervalle [0,255]. Une image couleur,
c'est la même chose mais il y a 3 canaux RVB, un pour chaque couleur
Rouge Vert Bleu. Une image codée sur "8 bits" (ou 24 bits en couleurs)
aura des niveaux de gris entiers, donc 256 niveaux possibles. Une image
codée sur 16 bits permettra d'atteindre des valeurs décimales
intermédiaires avec une précision de 1/256=0.00390625.
Pour modifier le contraste et/ou la luminosité d'une image, nous disposons
de 3 outils : l'outil "contraste/luminosité", l'outil "niveaux" et l'outil
"courbe". Nous allons voir comment ils agissent et quel sont les rapports
et les différences entre eux.
La seule chose à comprendre est que ces trois outils vont effectuer
une transformation qui va agir sur l'intervalle [0,255] pour
redonner des valeurs dans [0,255]. Ils vont donc définir une fonction
mathématique [0,255] -> [0,255].
1/ L'outil "contraste/luminosité".
C'est l'outil le plus basique.
Il est à éviter en général, sauf si on sait exactement ce qu'on fait.
Il définit une transformation affine du type f(x) = ax + b.
Le "contraste" donne la pente de la droite (a). Si on augmente
le contraste, la pente est >1, si on le diminue elle est <1.
La "luminosité" donne la valeur à l'origine de la droite.
C'est donc un outil à 2 degrés de liberté.
Supposons que l'on veuille doubler le contraste (c'est beaucoup
mais c'est juste pour l'exemple) en conservant la luminosité moyenne.
On va agir sur les deux potentiomètres pour définir la transformation
f(x) = 2x - 128
car on veut que le niveau 128 soit conservé.
En appliquant cette transformation on constate 2 effets:
a/ les valeurs extrêmes sont écrêtées : tous les x<65 deviennent 0
et les x>191 deviennent 255.
b/ les valeurs intermédiaires sont étalées : dans notre exemple les
niveaux de gris sont tous pairs si les niveaux initiaux étaient entiers.
C'est l'effet de "peigne" dans l'histogramme.
Notons que si on avait pris un facteur de contraste plus réaliste
(non entier), pour une image 8 bits avec un dégradé régulier (de 1 en 1),
on aurait obtenu des valeurs intermédiaires irrégulières dans l'image
d'arrivée, avec une alternance de sauts de 1 et de sauts de 2 d'un gris à
l'autre. C'est un effet très désagréable et visible à l'oeil nu.
Il se voit aussi dans l'autre sens si on réduit le contraste (a<1).
Dans ce cas on perd des valeurs dans les dégradés (des valeurs initiales
différentes donnent des valeurs finales identiques).
De plus, si a<1, on perd le "point noir" ou le "point blanc" de l'image.
Ou même les deux.
Enfin cet outil n'agit que sur le niveau global de l'image, i.e.
sur les 3 canaux en même temps dans le cas d'une image couleur.
Les deux outils suivants permettent d'agir sélectivement sur
un canal, même si cela peut s'avérer délicat à bien maîtriser (en
tout cas pour moi :).
2/ L'outil "niveaux".
Il permet de définir une transformation "affine par morceaux"
avec 2 morceaux. C'est donc un outil à 4 degrés de liberté permettant
d'agir avec bien plus de finesse que le précédent. De plus (au moins
avec PS et Gimp) il ouvre une fenêtre montrant l'histogramme de l'image
qui permet de bien régler les zones de luminosité où vont
agir chacune des deux droites.
Dans la partie "input level" les curseurs extrémaux noir et blanc servent
à définir les points extrémaux des deux droites, qui vont être associés
aux points extrémaux de l'image d'arrivée (définis par les curseurs
noir et blanc de la partie "output level").
Le curseur du milieu (gris) sert à contrôler le point d'intersection
des deux droites. On va ainsi pouvoir par exemple augmenter le contraste
pour les basses lumières sans trop dégrader les hautes lumières.
L'histogramme est essentiel alors pour comprendre ce qu'on fait
(cf. http://www.wild-works.net/metier/pages/did_gde_fr.html).
Notons que si le curseur gris reste en position médiane, équidistante
des curseurs noir et blanc, on obtient deux droites de même pente,
c'est-à-dire une droite. L'effet est donc strictement identique à
l'outil "contraste/luminosité".
3/ L'outil "courbe"
Là où les outils précédents avaient 2 ou 4 degrés de liberté, celui-ci
en a une infinité puisqu'il permet de définir (presque) n'importe quelle
transformation de [0,255]->[0,255], y compris non croissante (par exemple
f(x)=-x permet d'obtenir le négatif d'une image), non monotone
(croissante puis décroissante) ou discontinue.
Le long de l'abcisse et de l'ordonnée de la courbe il y a un dégradé
de gris qui permet de visualiser la transformation mais il manque
amha l'histogramme qui était si utile dans l'outil "niveaux". En revanche
la souplesse du contrôle est infiniment plus grande. Trop même parfois.
4/ 8 bits / 16 bits
Il est admis que l'oeil humain ne distingue pas plus de 256 niveaux
de gris. Une image sur 8 bits est donc en pratique suffisante.
Mais comme on vient de le voir, dès lors que l'on touche au contraste on
perd de l'information si on travaille sur une image 8 bits, et ce quelle
que soit la méthode utilisée. Là où le contraste augmente on obtient
des trous dans les dégradés (valeurs manquantes). Là où il diminue
on perd de l'information (des valeurs initiales différentes sont
identiques dans l'image finale).
L'idéal est donc de partir d'une image ayant plus de précision dans
son codage de couleurs. Par exemple une image scannée sur 16 bits ou bien
une image raw codée sur 12 bits issue d'un apn haut de gamme.
En revanche on entend souvent qu'il est très utile de convertir une image
8 bits en 16 bits avant de la retoucher. Si on ne doit faire
qu'une seule opération de retouche du type décrit ci-dessus, cette
méthode n'apporte strictement rien car le passage en 16 bits ne
donne pas plus d'informations sur les dégradés de l'image initiale.
En revanche, si on doit revenir dessus par la suite, cela peut être utile
car l'image modifiée et conservée en 16 bits sera plus riche que sa
projection sur 8 bits.
Par exemple (exemple idiot mais didactique): prenons une image 8 bits et
réduisons son contraste d'un facteur 10. Sauvons là et augmentons son
contraste d'un facteur 10. L'image finale aura des dégradés présentant
des sauts de 10 au moins.
Faisons la même chose avec la même image initiale 8 bits mais convertie
en 16 bits, avec les 2 transformations idiotes s'effectuant sur les images
16 bits. On retombe grosso-modo sur l'image de départ.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
daniel \boeing\
dans l'article botndk$3ri$, François Jouve à a écrit le 12/11/03 11:36 :
Mes 2 sous.
j'ai lu avec interet tout ceci, appris des choses. je serais donc moins idiot ce soir. interessant, pour les niveaux, le probleme du curseur gris en position mediane. les courbes sont un outil tres puissant, et il est aussi tres judicieux de l'utiliser en mode LAB.
par contre, si je peux me permettre, je propose une 4eme voie que j'utilise aussi : dans photoshop, sur une image, je dupplique le calque et celui obtenu est mis en mode "superposition". l'image s'eclairci, et je peux jouer sur l'opacité pour obtenir un résultat qui peut etre interessant.. cette méthode n'affecte pas l'original, et peut aussi permettre, par selection de zone, de n'eclaircir qu'une partie de l'image.
mon pauvre sou.
-- .:: daniel.patin et non pas marcel.dugenou ::.
dans l'article botndk$3ri$1@news.polytechnique.fr, François Jouve à
Francois.JouveNOSPAM@Polytechnique.fr a écrit le 12/11/03 11:36 :
Mes 2 sous.
j'ai lu avec interet tout ceci, appris des choses. je serais donc moins
idiot ce soir. interessant, pour les niveaux, le probleme du curseur gris
en position mediane. les courbes sont un outil tres puissant, et il est
aussi tres judicieux de l'utiliser en mode LAB.
par contre, si je peux me permettre, je propose une 4eme voie que j'utilise
aussi : dans photoshop, sur une image, je dupplique le calque et celui
obtenu est mis en mode "superposition". l'image s'eclairci, et je peux jouer
sur l'opacité pour obtenir un résultat qui peut etre interessant.. cette
méthode n'affecte pas l'original, et peut aussi permettre, par selection de
zone, de n'eclaircir qu'une partie de l'image.
dans l'article botndk$3ri$, François Jouve à a écrit le 12/11/03 11:36 :
Mes 2 sous.
j'ai lu avec interet tout ceci, appris des choses. je serais donc moins idiot ce soir. interessant, pour les niveaux, le probleme du curseur gris en position mediane. les courbes sont un outil tres puissant, et il est aussi tres judicieux de l'utiliser en mode LAB.
par contre, si je peux me permettre, je propose une 4eme voie que j'utilise aussi : dans photoshop, sur une image, je dupplique le calque et celui obtenu est mis en mode "superposition". l'image s'eclairci, et je peux jouer sur l'opacité pour obtenir un résultat qui peut etre interessant.. cette méthode n'affecte pas l'original, et peut aussi permettre, par selection de zone, de n'eclaircir qu'une partie de l'image.
mon pauvre sou.
-- .:: daniel.patin et non pas marcel.dugenou ::.
Mic. Archambault
François Jouve a écrit dans le message : botndk$3ri$
Bonjour,
suite à une récente micro-polémique à propos de la meilleure façon de corriger le contraste d'une image avec un logiciel de traitement d'image (PhotoShop, Gimp même combat), je me suis penché attentivement sur la question afin d'essayer de bien comprendre ce que font ces logiciels.
Comme je n'ai rien trouvé dans la FAQ (http://frp.parisv.com/index.html)
à ce sujet je vous communique le fruit de mes réflexions.
Certains trouveront ce texte très basique, d'autres trop didactique. Inutile de le faire remarquer. En revanche si j'ai commis
des erreurs ou des imprécisions n'hésitez pas.
Ce que je vais raconter concerne une image noir et blanc avec des
niveaux de gris codés dans l'intervalle [0,255]. Une image couleur,
c'est la même chose mais il y a 3 canaux RVB, un pour chaque couleur
Rouge Vert Bleu. Une image codée sur "8 bits" (ou 24 bits en couleurs)
aura des niveaux de gris entiers, donc 256 niveaux possibles. Une image
codée sur 16 bits permettra d'atteindre des valeurs décimales intermédiaires avec une précision de 1/256=0.00390625.
Pour modifier le contraste et/ou la luminosité d'une image, nous disposons
de 3 outils : l'outil "contraste/luminosité", l'outil "niveaux" et l'outil
"courbe". Nous allons voir comment ils agissent et quel sont les rapports
et les différences entre eux.
La seule chose à comprendre est que ces trois outils vont effectuer
une transformation qui va agir sur l'intervalle [0,255] pour redonner des valeurs dans [0,255]. Ils vont donc définir une fonction
mathématique [0,255] -> [0,255].
1/ L'outil "contraste/luminosité".
C'est l'outil le plus basique. Il est à éviter en général, sauf si on sait exactement ce qu'on fait.
Il définit une transformation affine du type f(x) = ax + b. Le "contraste" donne la pente de la droite (a). Si on augmente le contraste, la pente est >1, si on le diminue elle est <1. La "luminosité" donne la valeur à l'origine de la droite. C'est donc un outil à 2 degrés de liberté.
Supposons que l'on veuille doubler le contraste (c'est beaucoup mais c'est juste pour l'exemple) en conservant la luminosité moyenne.
On va agir sur les deux potentiomètres pour définir la transformation
f(x) = 2x - 128 car on veut que le niveau 128 soit conservé. En appliquant cette transformation on constate 2 effets: a/ les valeurs extrêmes sont écrêtées : tous les x<65 deviennent 0
et les x>191 deviennent 255. b/ les valeurs intermédiaires sont étalées : dans notre exemple les
niveaux de gris sont tous pairs si les niveaux initiaux étaient entiers.
C'est l'effet de "peigne" dans l'histogramme.
Notons que si on avait pris un facteur de contraste plus réaliste
(non entier), pour une image 8 bits avec un dégradé régulier (de 1 en 1),
on aurait obtenu des valeurs intermédiaires irrégulières dans l'image
d'arrivée, avec une alternance de sauts de 1 et de sauts de 2 d'un gris à
l'autre. C'est un effet très désagréable et visible à l'oeil nu.
Il se voit aussi dans l'autre sens si on réduit le contraste (a<1).
Dans ce cas on perd des valeurs dans les dégradés (des valeurs initiales
différentes donnent des valeurs finales identiques).
De plus, si a<1, on perd le "point noir" ou le "point blanc" de l'image.
Ou même les deux.
Enfin cet outil n'agit que sur le niveau global de l'image, i.e.
sur les 3 canaux en même temps dans le cas d'une image couleur. Les deux outils suivants permettent d'agir sélectivement sur un canal, même si cela peut s'avérer délicat à bien maîtriser (en
tout cas pour moi :).
2/ L'outil "niveaux".
Il permet de définir une transformation "affine par morceaux" avec 2 morceaux. C'est donc un outil à 4 degrés de liberté permettant
d'agir avec bien plus de finesse que le précédent. De plus (au moins
avec PS et Gimp) il ouvre une fenêtre montrant l'histogramme de l'image
qui permet de bien régler les zones de luminosité où vont agir chacune des deux droites.
Dans la partie "input level" les curseurs extrémaux noir et blanc servent
à définir les points extrémaux des deux droites, qui vont être associés
aux points extrémaux de l'image d'arrivée (définis par les curseurs
noir et blanc de la partie "output level"). Le curseur du milieu (gris) sert à contrôler le point d'intersection
des deux droites. On va ainsi pouvoir par exemple augmenter le contraste
pour les basses lumières sans trop dégrader les hautes lumières.
L'histogramme est essentiel alors pour comprendre ce qu'on fait (cf. http://www.wild-works.net/metier/pages/did_gde_fr.html).
Notons que si le curseur gris reste en position médiane, équidistante
des curseurs noir et blanc, on obtient deux droites de même pente,
c'est-à-dire une droite. L'effet est donc strictement identique à
l'outil "contraste/luminosité".
3/ L'outil "courbe"
Là où les outils précédents avaient 2 ou 4 degrés de liberté, celui-ci
en a une infinité puisqu'il permet de définir (presque) n'importe quelle
transformation de [0,255]->[0,255], y compris non croissante (par exemple
f(x)=-x permet d'obtenir le négatif d'une image), non monotone (croissante puis décroissante) ou discontinue.
Le long de l'abcisse et de l'ordonnée de la courbe il y a un dégradé
de gris qui permet de visualiser la transformation mais il manque
amha l'histogramme qui était si utile dans l'outil "niveaux". En revanche
la souplesse du contrôle est infiniment plus grande. Trop même parfois.
4/ 8 bits / 16 bits
Il est admis que l'oeil humain ne distingue pas plus de 256 niveaux
de gris. Une image sur 8 bits est donc en pratique suffisante.
Mais comme on vient de le voir, dès lors que l'on touche au contraste on
perd de l'information si on travaille sur une image 8 bits, et ce quelle
que soit la méthode utilisée. Là où le contraste augmente on obtient
des trous dans les dégradés (valeurs manquantes). Là où il diminue
on perd de l'information (des valeurs initiales différentes sont
identiques dans l'image finale).
L'idéal est donc de partir d'une image ayant plus de précision dans
son codage de couleurs. Par exemple une image scannée sur 16 bits ou bien
une image raw codée sur 12 bits issue d'un apn haut de gamme.
En revanche on entend souvent qu'il est très utile de convertir une image
8 bits en 16 bits avant de la retoucher. Si on ne doit faire qu'une seule opération de retouche du type décrit ci-dessus, cette
méthode n'apporte strictement rien car le passage en 16 bits ne donne pas plus d'informations sur les dégradés de l'image initiale.
En revanche, si on doit revenir dessus par la suite, cela peut être utile
car l'image modifiée et conservée en 16 bits sera plus riche que sa
projection sur 8 bits.
Par exemple (exemple idiot mais didactique): prenons une image 8 bits et
réduisons son contraste d'un facteur 10. Sauvons là et augmentons son
contraste d'un facteur 10. L'image finale aura des dégradés présentant
des sauts de 10 au moins. Faisons la même chose avec la même image initiale 8 bits mais convertie
en 16 bits, avec les 2 transformations idiotes s'effectuant sur les images
16 bits. On retombe grosso-modo sur l'image de départ.
Mes 2 sous.
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment de déguiser en compliqué ce qui est relativement simple ? À titre d'exemple les trois malheureux curseurs contrôle de niveaux... Bien des gens auront désormais peur de s'en resservir :-)
-- Michel La pensée louf de la semaine : Je n'aime pas les racistes, et encore moins les nègres. AntiSpam : remplacez mac par m
François Jouve <Francois.JouveNOSPAM@Polytechnique.fr> a écrit
dans le message : botndk$3ri$1@news.polytechnique.fr...
Bonjour,
suite à une récente micro-polémique à propos de la meilleure
façon de corriger le contraste d'une image avec un logiciel
de traitement d'image (PhotoShop, Gimp même combat), je me suis
penché attentivement sur la question afin d'essayer de bien
comprendre ce que font ces logiciels.
Comme je n'ai rien trouvé dans la FAQ
(http://frp.parisv.com/index.html)
à ce sujet je vous communique le fruit de mes réflexions.
Certains trouveront ce texte très basique, d'autres trop
didactique. Inutile de le faire remarquer. En revanche si j'ai
commis
des erreurs ou des imprécisions n'hésitez pas.
Ce que je vais raconter concerne une image noir et blanc avec
des
niveaux de gris codés dans l'intervalle [0,255]. Une image
couleur,
c'est la même chose mais il y a 3 canaux RVB, un pour chaque
couleur
Rouge Vert Bleu. Une image codée sur "8 bits" (ou 24 bits en
couleurs)
aura des niveaux de gris entiers, donc 256 niveaux possibles.
Une image
codée sur 16 bits permettra d'atteindre des valeurs décimales
intermédiaires avec une précision de 1/256=0.00390625.
Pour modifier le contraste et/ou la luminosité d'une image,
nous disposons
de 3 outils : l'outil "contraste/luminosité", l'outil "niveaux"
et l'outil
"courbe". Nous allons voir comment ils agissent et quel sont
les rapports
et les différences entre eux.
La seule chose à comprendre est que ces trois outils vont
effectuer
une transformation qui va agir sur l'intervalle [0,255] pour
redonner des valeurs dans [0,255]. Ils vont donc définir une
fonction
mathématique [0,255] -> [0,255].
1/ L'outil "contraste/luminosité".
C'est l'outil le plus basique.
Il est à éviter en général, sauf si on sait exactement ce qu'on
fait.
Il définit une transformation affine du type f(x) = ax + b.
Le "contraste" donne la pente de la droite (a). Si on augmente
le contraste, la pente est >1, si on le diminue elle est <1.
La "luminosité" donne la valeur à l'origine de la droite.
C'est donc un outil à 2 degrés de liberté.
Supposons que l'on veuille doubler le contraste (c'est beaucoup
mais c'est juste pour l'exemple) en conservant la luminosité
moyenne.
On va agir sur les deux potentiomètres pour définir la
transformation
f(x) = 2x - 128
car on veut que le niveau 128 soit conservé.
En appliquant cette transformation on constate 2 effets:
a/ les valeurs extrêmes sont écrêtées : tous les x<65
deviennent 0
et les x>191 deviennent 255.
b/ les valeurs intermédiaires sont étalées : dans notre exemple
les
niveaux de gris sont tous pairs si les niveaux initiaux étaient
entiers.
C'est l'effet de "peigne" dans l'histogramme.
Notons que si on avait pris un facteur de contraste plus
réaliste
(non entier), pour une image 8 bits avec un dégradé régulier
(de 1 en 1),
on aurait obtenu des valeurs intermédiaires irrégulières dans
l'image
d'arrivée, avec une alternance de sauts de 1 et de sauts de 2
d'un gris à
l'autre. C'est un effet très désagréable et visible à l'oeil
nu.
Il se voit aussi dans l'autre sens si on réduit le contraste
(a<1).
Dans ce cas on perd des valeurs dans les dégradés (des valeurs
initiales
différentes donnent des valeurs finales identiques).
De plus, si a<1, on perd le "point noir" ou le "point blanc" de
l'image.
Ou même les deux.
Enfin cet outil n'agit que sur le niveau global de l'image,
i.e.
sur les 3 canaux en même temps dans le cas d'une image couleur.
Les deux outils suivants permettent d'agir sélectivement sur
un canal, même si cela peut s'avérer délicat à bien maîtriser
(en
tout cas pour moi :).
2/ L'outil "niveaux".
Il permet de définir une transformation "affine par morceaux"
avec 2 morceaux. C'est donc un outil à 4 degrés de liberté
permettant
d'agir avec bien plus de finesse que le précédent. De plus (au
moins
avec PS et Gimp) il ouvre une fenêtre montrant l'histogramme de
l'image
qui permet de bien régler les zones de luminosité où vont
agir chacune des deux droites.
Dans la partie "input level" les curseurs extrémaux noir et
blanc servent
à définir les points extrémaux des deux droites, qui vont être
associés
aux points extrémaux de l'image d'arrivée (définis par les
curseurs
noir et blanc de la partie "output level").
Le curseur du milieu (gris) sert à contrôler le point
d'intersection
des deux droites. On va ainsi pouvoir par exemple augmenter le
contraste
pour les basses lumières sans trop dégrader les hautes
lumières.
L'histogramme est essentiel alors pour comprendre ce qu'on fait
(cf. http://www.wild-works.net/metier/pages/did_gde_fr.html).
Notons que si le curseur gris reste en position médiane,
équidistante
des curseurs noir et blanc, on obtient deux droites de même
pente,
c'est-à-dire une droite. L'effet est donc strictement identique
à
l'outil "contraste/luminosité".
3/ L'outil "courbe"
Là où les outils précédents avaient 2 ou 4 degrés de liberté,
celui-ci
en a une infinité puisqu'il permet de définir (presque)
n'importe quelle
transformation de [0,255]->[0,255], y compris non croissante
(par exemple
f(x)=-x permet d'obtenir le négatif d'une image), non monotone
(croissante puis décroissante) ou discontinue.
Le long de l'abcisse et de l'ordonnée de la courbe il y a un
dégradé
de gris qui permet de visualiser la transformation mais il
manque
amha l'histogramme qui était si utile dans l'outil "niveaux".
En revanche
la souplesse du contrôle est infiniment plus grande. Trop même
parfois.
4/ 8 bits / 16 bits
Il est admis que l'oeil humain ne distingue pas plus de 256
niveaux
de gris. Une image sur 8 bits est donc en pratique suffisante.
Mais comme on vient de le voir, dès lors que l'on touche au
contraste on
perd de l'information si on travaille sur une image 8 bits, et
ce quelle
que soit la méthode utilisée. Là où le contraste augmente on
obtient
des trous dans les dégradés (valeurs manquantes). Là où il
diminue
on perd de l'information (des valeurs initiales différentes
sont
identiques dans l'image finale).
L'idéal est donc de partir d'une image ayant plus de précision
dans
son codage de couleurs. Par exemple une image scannée sur 16
bits ou bien
une image raw codée sur 12 bits issue d'un apn haut de gamme.
En revanche on entend souvent qu'il est très utile de convertir
une image
8 bits en 16 bits avant de la retoucher. Si on ne doit faire
qu'une seule opération de retouche du type décrit ci-dessus,
cette
méthode n'apporte strictement rien car le passage en 16 bits ne
donne pas plus d'informations sur les dégradés de l'image
initiale.
En revanche, si on doit revenir dessus par la suite, cela peut
être utile
car l'image modifiée et conservée en 16 bits sera plus riche
que sa
projection sur 8 bits.
Par exemple (exemple idiot mais didactique): prenons une image
8 bits et
réduisons son contraste d'un facteur 10. Sauvons là et
augmentons son
contraste d'un facteur 10. L'image finale aura des dégradés
présentant
des sauts de 10 au moins.
Faisons la même chose avec la même image initiale 8 bits mais
convertie
en 16 bits, avec les 2 transformations idiotes s'effectuant sur
les images
16 bits. On retombe grosso-modo sur l'image de départ.
Mes 2 sous.
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment
de déguiser en compliqué ce qui est relativement simple ? À titre
d'exemple les trois malheureux curseurs contrôle de niveaux...
Bien des gens auront désormais peur de s'en resservir :-)
--
Michel
La pensée louf de la semaine :
Je n'aime pas les racistes, et encore moins les nègres.
AntiSpam : remplacez mac par m
François Jouve a écrit dans le message : botndk$3ri$
Bonjour,
suite à une récente micro-polémique à propos de la meilleure façon de corriger le contraste d'une image avec un logiciel de traitement d'image (PhotoShop, Gimp même combat), je me suis penché attentivement sur la question afin d'essayer de bien comprendre ce que font ces logiciels.
Comme je n'ai rien trouvé dans la FAQ (http://frp.parisv.com/index.html)
à ce sujet je vous communique le fruit de mes réflexions.
Certains trouveront ce texte très basique, d'autres trop didactique. Inutile de le faire remarquer. En revanche si j'ai commis
des erreurs ou des imprécisions n'hésitez pas.
Ce que je vais raconter concerne une image noir et blanc avec des
niveaux de gris codés dans l'intervalle [0,255]. Une image couleur,
c'est la même chose mais il y a 3 canaux RVB, un pour chaque couleur
Rouge Vert Bleu. Une image codée sur "8 bits" (ou 24 bits en couleurs)
aura des niveaux de gris entiers, donc 256 niveaux possibles. Une image
codée sur 16 bits permettra d'atteindre des valeurs décimales intermédiaires avec une précision de 1/256=0.00390625.
Pour modifier le contraste et/ou la luminosité d'une image, nous disposons
de 3 outils : l'outil "contraste/luminosité", l'outil "niveaux" et l'outil
"courbe". Nous allons voir comment ils agissent et quel sont les rapports
et les différences entre eux.
La seule chose à comprendre est que ces trois outils vont effectuer
une transformation qui va agir sur l'intervalle [0,255] pour redonner des valeurs dans [0,255]. Ils vont donc définir une fonction
mathématique [0,255] -> [0,255].
1/ L'outil "contraste/luminosité".
C'est l'outil le plus basique. Il est à éviter en général, sauf si on sait exactement ce qu'on fait.
Il définit une transformation affine du type f(x) = ax + b. Le "contraste" donne la pente de la droite (a). Si on augmente le contraste, la pente est >1, si on le diminue elle est <1. La "luminosité" donne la valeur à l'origine de la droite. C'est donc un outil à 2 degrés de liberté.
Supposons que l'on veuille doubler le contraste (c'est beaucoup mais c'est juste pour l'exemple) en conservant la luminosité moyenne.
On va agir sur les deux potentiomètres pour définir la transformation
f(x) = 2x - 128 car on veut que le niveau 128 soit conservé. En appliquant cette transformation on constate 2 effets: a/ les valeurs extrêmes sont écrêtées : tous les x<65 deviennent 0
et les x>191 deviennent 255. b/ les valeurs intermédiaires sont étalées : dans notre exemple les
niveaux de gris sont tous pairs si les niveaux initiaux étaient entiers.
C'est l'effet de "peigne" dans l'histogramme.
Notons que si on avait pris un facteur de contraste plus réaliste
(non entier), pour une image 8 bits avec un dégradé régulier (de 1 en 1),
on aurait obtenu des valeurs intermédiaires irrégulières dans l'image
d'arrivée, avec une alternance de sauts de 1 et de sauts de 2 d'un gris à
l'autre. C'est un effet très désagréable et visible à l'oeil nu.
Il se voit aussi dans l'autre sens si on réduit le contraste (a<1).
Dans ce cas on perd des valeurs dans les dégradés (des valeurs initiales
différentes donnent des valeurs finales identiques).
De plus, si a<1, on perd le "point noir" ou le "point blanc" de l'image.
Ou même les deux.
Enfin cet outil n'agit que sur le niveau global de l'image, i.e.
sur les 3 canaux en même temps dans le cas d'une image couleur. Les deux outils suivants permettent d'agir sélectivement sur un canal, même si cela peut s'avérer délicat à bien maîtriser (en
tout cas pour moi :).
2/ L'outil "niveaux".
Il permet de définir une transformation "affine par morceaux" avec 2 morceaux. C'est donc un outil à 4 degrés de liberté permettant
d'agir avec bien plus de finesse que le précédent. De plus (au moins
avec PS et Gimp) il ouvre une fenêtre montrant l'histogramme de l'image
qui permet de bien régler les zones de luminosité où vont agir chacune des deux droites.
Dans la partie "input level" les curseurs extrémaux noir et blanc servent
à définir les points extrémaux des deux droites, qui vont être associés
aux points extrémaux de l'image d'arrivée (définis par les curseurs
noir et blanc de la partie "output level"). Le curseur du milieu (gris) sert à contrôler le point d'intersection
des deux droites. On va ainsi pouvoir par exemple augmenter le contraste
pour les basses lumières sans trop dégrader les hautes lumières.
L'histogramme est essentiel alors pour comprendre ce qu'on fait (cf. http://www.wild-works.net/metier/pages/did_gde_fr.html).
Notons que si le curseur gris reste en position médiane, équidistante
des curseurs noir et blanc, on obtient deux droites de même pente,
c'est-à-dire une droite. L'effet est donc strictement identique à
l'outil "contraste/luminosité".
3/ L'outil "courbe"
Là où les outils précédents avaient 2 ou 4 degrés de liberté, celui-ci
en a une infinité puisqu'il permet de définir (presque) n'importe quelle
transformation de [0,255]->[0,255], y compris non croissante (par exemple
f(x)=-x permet d'obtenir le négatif d'une image), non monotone (croissante puis décroissante) ou discontinue.
Le long de l'abcisse et de l'ordonnée de la courbe il y a un dégradé
de gris qui permet de visualiser la transformation mais il manque
amha l'histogramme qui était si utile dans l'outil "niveaux". En revanche
la souplesse du contrôle est infiniment plus grande. Trop même parfois.
4/ 8 bits / 16 bits
Il est admis que l'oeil humain ne distingue pas plus de 256 niveaux
de gris. Une image sur 8 bits est donc en pratique suffisante.
Mais comme on vient de le voir, dès lors que l'on touche au contraste on
perd de l'information si on travaille sur une image 8 bits, et ce quelle
que soit la méthode utilisée. Là où le contraste augmente on obtient
des trous dans les dégradés (valeurs manquantes). Là où il diminue
on perd de l'information (des valeurs initiales différentes sont
identiques dans l'image finale).
L'idéal est donc de partir d'une image ayant plus de précision dans
son codage de couleurs. Par exemple une image scannée sur 16 bits ou bien
une image raw codée sur 12 bits issue d'un apn haut de gamme.
En revanche on entend souvent qu'il est très utile de convertir une image
8 bits en 16 bits avant de la retoucher. Si on ne doit faire qu'une seule opération de retouche du type décrit ci-dessus, cette
méthode n'apporte strictement rien car le passage en 16 bits ne donne pas plus d'informations sur les dégradés de l'image initiale.
En revanche, si on doit revenir dessus par la suite, cela peut être utile
car l'image modifiée et conservée en 16 bits sera plus riche que sa
projection sur 8 bits.
Par exemple (exemple idiot mais didactique): prenons une image 8 bits et
réduisons son contraste d'un facteur 10. Sauvons là et augmentons son
contraste d'un facteur 10. L'image finale aura des dégradés présentant
des sauts de 10 au moins. Faisons la même chose avec la même image initiale 8 bits mais convertie
en 16 bits, avec les 2 transformations idiotes s'effectuant sur les images
16 bits. On retombe grosso-modo sur l'image de départ.
Mes 2 sous.
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment de déguiser en compliqué ce qui est relativement simple ? À titre d'exemple les trois malheureux curseurs contrôle de niveaux... Bien des gens auront désormais peur de s'en resservir :-)
-- Michel La pensée louf de la semaine : Je n'aime pas les racistes, et encore moins les nègres. AntiSpam : remplacez mac par m
François Jouve
Mic. Archambault wrote:
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment de déguiser en compliqué ce qui est relativement simple ? À titre d'exemple les trois malheureux curseurs contrôle de niveaux... Bien des gens auront désormais peur de s'en resservir :-)
Disons que ça doit être de la déformation professionnelle :) Moi ça m'aide plutôt à comprendre de me dire:
Contraste/luminosité: une droite Niveaux: 2 droites Courbe: une courbe :)
-- F.J.
Mic. Archambault wrote:
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment
de déguiser en compliqué ce qui est relativement simple ? À titre
d'exemple les trois malheureux curseurs contrôle de niveaux...
Bien des gens auront désormais peur de s'en resservir :-)
Disons que ça doit être de la déformation professionnelle :)
Moi ça m'aide plutôt à comprendre de me dire:
Contraste/luminosité: une droite
Niveaux: 2 droites
Courbe: une courbe :)
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment de déguiser en compliqué ce qui est relativement simple ? À titre d'exemple les trois malheureux curseurs contrôle de niveaux... Bien des gens auront désormais peur de s'en resservir :-)
Disons que ça doit être de la déformation professionnelle :) Moi ça m'aide plutôt à comprendre de me dire:
Contraste/luminosité: une droite Niveaux: 2 droites Courbe: une courbe :)
-- F.J.
François Jouve
daniel "boeing" wrote:
par contre, si je peux me permettre, je propose une 4eme voie que j'utilise aussi : dans photoshop, sur une image, je dupplique le calque et celui obtenu est mis en mode "superposition". l'image s'eclairci, et je peux jouer sur l'opacité pour obtenir un résultat qui peut etre interessant.. cette méthode n'affecte pas l'original, et peut aussi permettre, par selection de zone, de n'eclaircir qu'une partie de l'image.
mon pauvre sou.
Oui bien sûr. A rajouter à mes sous :)
-- F.J.
daniel "boeing" wrote:
par contre, si je peux me permettre, je propose une 4eme voie que j'utilise
aussi : dans photoshop, sur une image, je dupplique le calque et celui
obtenu est mis en mode "superposition". l'image s'eclairci, et je peux jouer
sur l'opacité pour obtenir un résultat qui peut etre interessant.. cette
méthode n'affecte pas l'original, et peut aussi permettre, par selection de
zone, de n'eclaircir qu'une partie de l'image.
par contre, si je peux me permettre, je propose une 4eme voie que j'utilise aussi : dans photoshop, sur une image, je dupplique le calque et celui obtenu est mis en mode "superposition". l'image s'eclairci, et je peux jouer sur l'opacité pour obtenir un résultat qui peut etre interessant.. cette méthode n'affecte pas l'original, et peut aussi permettre, par selection de zone, de n'eclaircir qu'une partie de l'image.
mon pauvre sou.
Oui bien sûr. A rajouter à mes sous :)
-- F.J.
FiLH
François Jouve writes:
Mic. Archambault wrote:
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment de déguiser en compliqué ce qui est relativement simple ? À titre d'exemple les trois malheureux curseurs contrôle de niveaux... Bien des gens auront désormais peur de s'en resservir :-)
Disons que ça doit être de la déformation professionnelle :) Moi ça m'aide plutôt à comprendre de me dire:
Contraste/luminosité: une droite Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite beaucoup plus comme un coef de gamma ce qui serait nettement plus agréable du point de vue de la progressivité de l'effet.
FiLH
-- FiLH photography. A taste of freedom in a conventional world. Web: http://www.filh.org e-mail FAQ fr.rec.photo : http://frp.parisv.com/ Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/
François Jouve <Francois.JouveNOSPAM@Polytechnique.fr> writes:
Mic. Archambault wrote:
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment
de déguiser en compliqué ce qui est relativement simple ? À titre
d'exemple les trois malheureux curseurs contrôle de niveaux...
Bien des gens auront désormais peur de s'en resservir :-)
Disons que ça doit être de la déformation professionnelle :)
Moi ça m'aide plutôt à comprendre de me dire:
Contraste/luminosité: une droite
Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite
beaucoup plus comme un coef de gamma ce qui serait nettement plus
agréable du point de vue de la progressivité de l'effet.
FiLH
--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail filh@filh.org
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/
Loin de moi l'idée de te contredire mais n'as-tu pas le sentiment de déguiser en compliqué ce qui est relativement simple ? À titre d'exemple les trois malheureux curseurs contrôle de niveaux... Bien des gens auront désormais peur de s'en resservir :-)
Disons que ça doit être de la déformation professionnelle :) Moi ça m'aide plutôt à comprendre de me dire:
Contraste/luminosité: une droite Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite beaucoup plus comme un coef de gamma ce qui serait nettement plus agréable du point de vue de la progressivité de l'effet.
FiLH
-- FiLH photography. A taste of freedom in a conventional world. Web: http://www.filh.org e-mail FAQ fr.rec.photo : http://frp.parisv.com/ Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/
François Jouve
FiLH wrote:
François Jouve writes:
Contraste/luminosité: une droite Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite beaucoup plus comme un coef de gamma ce qui serait nettement plus agréable du point de vue de la progressivité de l'effet.
Disons que ça ressort d'un triturage acharné de la bête depuis lundi. Je n'ai pas été jusqu'à regarder le source de Gimp, mais si quelqu'un veut se dévouer :)
Il est bien évident qu'on peut trouver plein d'autres courbes qui passent par 3 points mais laquelle choisir ? Je viens d'essayer avec l'outil "courbe" de xv qui permet de faire des courbes d'intensité non lissées, et deux droites de pentes même très différentes ne donnent pas de défaut de progressivité flagrant. C'est une rupture de pente simplement, pas une discontinuité de la fonction.
Ce qui est certain c'est qu'on obtient une seule droite lorsque le curseur gris est au milieu.
-- F.J.
FiLH wrote:
François Jouve <Francois.JouveNOSPAM@Polytechnique.fr> writes:
Contraste/luminosité: une droite
Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite
beaucoup plus comme un coef de gamma ce qui serait nettement plus
agréable du point de vue de la progressivité de l'effet.
Disons que ça ressort d'un triturage acharné de la bête depuis lundi.
Je n'ai pas été jusqu'à regarder le source de Gimp, mais si quelqu'un
veut se dévouer :)
Il est bien évident qu'on peut trouver plein d'autres courbes qui passent
par 3 points mais laquelle choisir ?
Je viens d'essayer avec l'outil "courbe" de xv qui permet de faire
des courbes d'intensité non lissées, et deux droites de pentes même
très différentes ne donnent pas de défaut de progressivité flagrant.
C'est une rupture de pente simplement, pas une discontinuité de la fonction.
Ce qui est certain c'est qu'on obtient une seule droite lorsque le curseur
gris est au milieu.
Contraste/luminosité: une droite Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite beaucoup plus comme un coef de gamma ce qui serait nettement plus agréable du point de vue de la progressivité de l'effet.
Disons que ça ressort d'un triturage acharné de la bête depuis lundi. Je n'ai pas été jusqu'à regarder le source de Gimp, mais si quelqu'un veut se dévouer :)
Il est bien évident qu'on peut trouver plein d'autres courbes qui passent par 3 points mais laquelle choisir ? Je viens d'essayer avec l'outil "courbe" de xv qui permet de faire des courbes d'intensité non lissées, et deux droites de pentes même très différentes ne donnent pas de défaut de progressivité flagrant. C'est une rupture de pente simplement, pas une discontinuité de la fonction.
Ce qui est certain c'est qu'on obtient une seule droite lorsque le curseur gris est au milieu.
-- F.J.
FiLH
François Jouve writes:
FiLH wrote:
François Jouve writes:
Contraste/luminosité: une droite Niveaux: 2 droites T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite
beaucoup plus comme un coef de gamma ce qui serait nettement plus agréable du point de vue de la progressivité de l'effet.
Disons que ça ressort d'un triturage acharné de la bête depuis lundi. Je n'ai pas été jusqu'à regarder le source de Gimp, mais si quelqu'un veut se dévouer :)
Remarque on doit pouvoir savoir pile poil : tu fais une image avec 256 niveaux en gradient, stocké sous pmb. on modifie, et on voit les valeurs numériques en sortie.
FiLH
-- FiLH photography. A taste of freedom in a conventional world. Web: http://www.filh.org e-mail FAQ fr.rec.photo : http://frp.parisv.com/ Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/
François Jouve <Francois.JouveNOSPAM@Polytechnique.fr> writes:
FiLH wrote:
François Jouve <Francois.JouveNOSPAM@Polytechnique.fr> writes:
Contraste/luminosité: une droite
Niveaux: 2 droites
T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite
beaucoup plus comme un coef de gamma ce qui serait nettement plus
agréable du point de vue de la progressivité de l'effet.
Disons que ça ressort d'un triturage acharné de la bête depuis lundi.
Je n'ai pas été jusqu'à regarder le source de Gimp, mais si quelqu'un
veut se dévouer :)
Remarque on doit pouvoir savoir pile poil : tu fais une image avec
256 niveaux en gradient, stocké sous pmb. on modifie, et on voit les
valeurs numériques en sortie.
FiLH
--
FiLH photography. A taste of freedom in a conventional world.
Web: http://www.filh.org e-mail filh@filh.org
FAQ fr.rec.photo : http://frp.parisv.com/
Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/
Contraste/luminosité: une droite Niveaux: 2 droites T'es sûr de toi sur la droite ? Le curseur du milieu je l'intuite
beaucoup plus comme un coef de gamma ce qui serait nettement plus agréable du point de vue de la progressivité de l'effet.
Disons que ça ressort d'un triturage acharné de la bête depuis lundi. Je n'ai pas été jusqu'à regarder le source de Gimp, mais si quelqu'un veut se dévouer :)
Remarque on doit pouvoir savoir pile poil : tu fais une image avec 256 niveaux en gradient, stocké sous pmb. on modifie, et on voit les valeurs numériques en sortie.
FiLH
-- FiLH photography. A taste of freedom in a conventional world. Web: http://www.filh.org e-mail FAQ fr.rec.photo : http://frp.parisv.com/ Sitafoto la photo a Bordeaux : http://sitafoto.free.fr/