OVH Cloud OVH Cloud

Balance des blancs

28 réponses
Avatar
Pierre CHAUVEAU
Bonjour, bonsoir,

Qui a une idée de l'algorithme à employer pour réaliser une balance des
blancs sur une photo numérique ?

Merci de votre aide.

Pierre.

10 réponses

1 2 3
Avatar
Kojak
Salut,

Qui a une idée de l'algorithme à employer pour réaliser une balance
des blancs sur une photo numérique ?


C'est basé sur la courbe de rayonnement du corps noir. Je
ne vais pas rentrer dans le détail, mais globalement, tu
détermines par exemple une zone blanche (ou supposé blanche)
et tu relèves sa temperature, ensuite, tu te sers de cette
dernière pour équilibrer les autres couleurs. Simple à dire,
mais un peu plus complexe à mettre en oeuvre (enfin, guère
plus). J'avais, il y a quelques temps, codé un plugin de ce
type pour gimp (impossible de remettre la main dessus).

Sinon le plus simple, IMHO, jette un oeil dans les sources
de "rawphoto" :

http://ptj.rozeta.com.pl/Soft/RawPhoto

qui utilise ce type d'algo pour ajuster la température
de couleur.

Enfin, quelques liens qui pourront t'aider :

http://www.cox-internet.com/ast305/color.html
http://www.brucelindbloom.com/
http://cvision.ucsd.edu/index.htm
http://home.achilles.net/~ypvsj//data/encoding.html
http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/

Voilà, ça sera tout pour aujourd'hui. :-)


Cordialement,

Jacques.

--
| nntpspy@ Resistance is futile / ...by the Net |
|----------------- |°| °/°/ |°| /------Collective-|
|-You will be-----/ |°|_| | / | |_|°| -----------------|
| assimilated... / |_____| / |_____| janville.Borg |

Avatar
Pierre CHAUVEAU
Merci beaucoup pour l'information et les liens.

Tous ces espaces de couleurs sont un peu loin dans ma tête et il va falloir
que je m'y replonge.

Pour ce qui me concerne, je travaille en RGB qui sont les composants
immédiates dans le language de programmation que j'utilise (DELPHI).

Que veut dire IMHO dans ta réponse ?

Quand tu parles de la température d'une couleur, quelle est la relation
entre cette température et les composantes RGB ?

Je voudrais ton avis sur une procédure que j'ai mise en oeuvre assez
simplement :

Je relève une zone de l'image que je souhaiterais être blanche ou grise (en
d'autres termes, où je souhaite que R = G = B)

Je fais une statistique sur cette zone qui me donne : Ri, Gi, Bi et I (Ri+Bi+Vi) / 3

Je calcule alors mes coefficients de correction :

kR = Ri / I
kG = Gi / I
kB = Bi / I

Je divise alors chaque composante de chaque pixel de l'image originale par
son coefficient et j'obtiens pour chaque pixel de l'image corrigée :

Rc = R / kR
Gc = G / kG
Bc = B / kB

J'obtiens des résultats qui ne me semblent pas trop idiots. J'ai
l'impression que le principe est correct mais qu'il manque quelque part une
matrice d'équilibrage.

Qu'en penses-tu ?

Pierre

"Kojak" a écrit dans le message de
news:clniti$21v3$
Salut,

Qui a une idée de l'algorithme à employer pour réaliser une balance
des blancs sur une photo numérique ?


C'est basé sur la courbe de rayonnement du corps noir. Je
ne vais pas rentrer dans le détail, mais globalement, tu
détermines par exemple une zone blanche (ou supposé blanche)
et tu relèves sa temperature, ensuite, tu te sers de cette
dernière pour équilibrer les autres couleurs. Simple à dire,
mais un peu plus complexe à mettre en oeuvre (enfin, guère
plus). J'avais, il y a quelques temps, codé un plugin de ce
type pour gimp (impossible de remettre la main dessus).

Sinon le plus simple, IMHO, jette un oeil dans les sources
de "rawphoto" :

http://ptj.rozeta.com.pl/Soft/RawPhoto

qui utilise ce type d'algo pour ajuster la température
de couleur.

Enfin, quelques liens qui pourront t'aider :

http://www.cox-internet.com/ast305/color.html
http://www.brucelindbloom.com/
http://cvision.ucsd.edu/index.htm
http://home.achilles.net/~ypvsj//data/encoding.html
http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/

Voilà, ça sera tout pour aujourd'hui. :-)


Cordialement,

Jacques.

--
| nntpspy@ Resistance is futile / ...by the Net |
|----------------- |°| °/°/ |°| /------Collective-|
|-You will be-----/ |°|_| | / | |_|°| -----------------|
| assimilated... / |_____| / |_____| janville.Borg |



Avatar
pehache
Pierre CHAUVEAU wrote:
Bonjour, bonsoir,

Qui a une idée de l'algorithme à employer pour réaliser une balance
des blancs sur une photo numérique ?



Je pense que la plupart du temps, c'est une simple modification de la pente
des trois courbes R,V,B de telle sorte que la zone indiquée soit neutre
(gris). A la manière de:
http://pehache.free.fr/TEMP/nega_whitebal.jpg
(c'est en afitun mauvais exemple car cette image nécessite plus qu'une
simple balance des blancs, mais c'est pour montrer l'effet sur les courbes)

Maintenant, pour faire une balance automatique c'est une autre paire de
manche :-)

--
pehache
enlever NOSPAM. etc... pour répondre / remove NOSPAM... to reply
http://pehache.free.fr/public.html

Avatar
Kojak
Tous ces espaces de couleurs sont un peu loin dans ma tête
et il va falloir que je m'y replonge.


Je crains que cela soit un passage obligé...

Pour ce qui me concerne, je travaille en RGB qui sont les composants
immédiates dans le language de programmation que j'utilise (DELPHI).


Dans un certain nombre de cas, il sera nécessaire de changer
de représentation colorimétrique, donc, ne te bloque pas
dessus. Mais bon, pour ton histoire de WB, pas de problème.

Que veut dire IMHO dans ta réponse ?


Oops, de vieux restes. Bref, "IMHO" c'est "In My Humble
Opinion" soit "AMHA" ou "A Mon Humble Avis" en français.


Quand tu parles de la température d'une couleur, quelle est la
relation entre cette température et les composantes RGB ?


la longueur d'onde du rayonnement émis par un corps noir
et fonction de sa température. Le spectre d'émission se
présente comme ceci :

http://www.physics.sfasu.edu/astro/color/blackbody3.gif

et leurs valeurs RGB :

http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html

En principe, tu utilises ce type de valeurs normalisées,
car il n'existe pas de bijections entres les valeurs RGB
et les longeurs d'onde (enfin, pas à ma connaissance).

Mais bon, le mieux est de te "re-imbiber" à haute dose de
colorimétrie, sinon, tu risques de galérer...

Quoi qu'il en soit, n'hesite pas étudier "rawphoto", tu
y trouveras toutes les réponses (ou du moins une grande
partie) à tes questions sur le sujet.


Je voudrais ton avis sur une procédure que j'ai mise en oeuvre assez
simplement :
[...]
Qu'en penses-tu ?


Ben, vu ce que tu me montres, je serais étonné que
cela fonctionne, le "(Ri+Bi+Vi) / 3" me gène un peu.
Mais bon, l'idée est là.

Sinon, si ça peut t'aider, imagine que tu appliques un
filtre. Tu crées un calque avec la couleur "à blanchir"
puis tu le superposes par division à ton image... Par
contre, le resultat ne sera pas tout à fait identique
avec l'application d'un filtre à la prise de vue, dans
la mesure ou ce dernier n'a pas une réponse constante
en fréquence. Mais bon, on ne va pas chipoter... :-)

Bref, comme je te l'ai dit, n'hesite pas à fouiller le
site de Lindbloom (et les autres) que je t'ai donné et,
surtout, à étudier les sources du programme "rawphoto",
tout y est.


Cordialement,

Jacques. Qui commence à avoir mal à la tête... :-D

P.S. Tu peux aussi consulter : news:sci.engr.color


--
| nntpspy@ Resistance is futile / ...by the Net |
|----------------- |°| °/°/ |°| /------Collective-|
|-You will be-----/ |°|_| | / | |_|°| -----------------|
| assimilated... / |_____| / |_____| janville.Borg |

Avatar
Jean-Luc ERNST
IMHO = In My Humble Opinion
AMHA = A Mon Humble Avis

%;>)

Cordialement,
Jean-Luc Ernst

"Pierre CHAUVEAU" a écrit dans le message de
news: 417f99cc$0$3212$
...snip...
Que veut dire IMHO dans ta réponse ?
...snip...


Avatar
Pierre CHAUVEAU
Le petit programme qui fait cette balance (lire l'aide pour l'utilisation de
la balance) se trouve à l'adresse suivante :

http://perso.wanadoo.fr/reli/Mpp/Mpp.htm

Je l'ai essayé sur des images avec une forte dominante bleue, les résultats
sont loins d'être catastrophiques.

Il faut de préférence sélectionner une zone relativement claire car plus
cette zone est sombre, plus les coefficients sont imprécis.

Donnes-moi ton avis.

Ce qui n'empêche pas que je vais me replonger dans tout cela. J'ai un peu de
mal avec le source "rawphoto" car je ne suis pas un adepte du "C" ou "C++",
je programme en DELPHI (langage Pascal).

Cordialement.

Pierre.

"Kojak" a écrit dans le message de
news:clqd55$cee$
Tous ces espaces de couleurs sont un peu loin dans ma tête
et il va falloir que je m'y replonge.


Je crains que cela soit un passage obligé...

Pour ce qui me concerne, je travaille en RGB qui sont les composants
immédiates dans le language de programmation que j'utilise (DELPHI).


Dans un certain nombre de cas, il sera nécessaire de changer
de représentation colorimétrique, donc, ne te bloque pas
dessus. Mais bon, pour ton histoire de WB, pas de problème.

Que veut dire IMHO dans ta réponse ?


Oops, de vieux restes. Bref, "IMHO" c'est "In My Humble
Opinion" soit "AMHA" ou "A Mon Humble Avis" en français.


Quand tu parles de la température d'une couleur, quelle est la
relation entre cette température et les composantes RGB ?


la longueur d'onde du rayonnement émis par un corps noir
et fonction de sa température. Le spectre d'émission se
présente comme ceci :

http://www.physics.sfasu.edu/astro/color/blackbody3.gif

et leurs valeurs RGB :


http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html


En principe, tu utilises ce type de valeurs normalisées,
car il n'existe pas de bijections entres les valeurs RGB
et les longeurs d'onde (enfin, pas à ma connaissance).

Mais bon, le mieux est de te "re-imbiber" à haute dose de
colorimétrie, sinon, tu risques de galérer...

Quoi qu'il en soit, n'hesite pas étudier "rawphoto", tu
y trouveras toutes les réponses (ou du moins une grande
partie) à tes questions sur le sujet.


Je voudrais ton avis sur une procédure que j'ai mise en oeuvre assez
simplement :
[...]
Qu'en penses-tu ?


Ben, vu ce que tu me montres, je serais étonné que
cela fonctionne, le "(Ri+Bi+Vi) / 3" me gène un peu.
Mais bon, l'idée est là.

Sinon, si ça peut t'aider, imagine que tu appliques un
filtre. Tu crées un calque avec la couleur "à blanchir"
puis tu le superposes par division à ton image... Par
contre, le resultat ne sera pas tout à fait identique
avec l'application d'un filtre à la prise de vue, dans
la mesure ou ce dernier n'a pas une réponse constante
en fréquence. Mais bon, on ne va pas chipoter... :-)

Bref, comme je te l'ai dit, n'hesite pas à fouiller le
site de Lindbloom (et les autres) que je t'ai donné et,
surtout, à étudier les sources du programme "rawphoto",
tout y est.


Cordialement,

Jacques. Qui commence à avoir mal à la tête... :-D

P.S. Tu peux aussi consulter : news:sci.engr.color


--
| nntpspy@ Resistance is futile / ...by the Net |
|----------------- |°| °/°/ |°| /------Collective-|
|-You will be-----/ |°|_| | / | |_|°| -----------------|
| assimilated... / |_____| / |_____| janville.Borg |



Avatar
Kojak

http://perso.wanadoo.fr/reli/Mpp/Mpp.htm
Donnes-moi ton avis.


Heu... Oui... Là, ça va être difficile, je n'ai pas window.
J'ai bien un compilo Pascal (jamais utilisé) sur mon système,
mais je crains que les spécificités de Delphi ne rendent ce
dernier incompatible avec ma version.


je ne suis pas un adepte du "C" ou "C++",
je programme en DELPHI (langage Pascal).


Bah ! Pas grave, personne n'est parfait. ;-)


Cordialement,

Jacques.

P.S. Ce serait plus sympa si tu pouvais éviter de reprendre
chaque intervention dans son intégralité, et répondre dans
le sens logique de la lecture :

http://www.giromini.org/usenet-fr/repondre.html

--
| nntpspy@ Resistance is futile / ...by the Net |
|----------------- |°| °/°/ |°| /------Collective-|
|-You will be-----/ |°|_| | / | |_|°| -----------------|
| assimilated... / |_____| / |_____| janville.Borg |

Avatar
Pierre CHAUVEAU
Jacques a dit (c'est marrant, j'ai déjà entendu ça quelque part !)

P.S. Ce serait plus sympa si tu pouvais éviter de reprendre
chaque intervention dans son intégralité, et répondre dans
le sens logique de la lecture :


Je fais mon mea-culpa. En effet, j'ai eu tendance à suivre assez bêtement ce
qui se pratique malheureusement pas mal, c'est à dire :

- répondre au dessus : c'est "l'invite" qui est placée en début de texte
qui incite à placer là sa réponse,
- laisser tous les textes s'empiler : pour avoir les références passées. Cà
alourdit le message mais a quand même l'avantage d'avoir toutes les
références dans un même message.

Donc je vais essayer de suivre au mieux les recommandations préconisées.

Cela dit, j'ai changé le terme "moyenne des (Ri+Bi+Vi) / 3" par "moyenne
des Max(Ri, Bi, Vi)" : j'observe les choses suivantes sur une image à très
forte dominance de bleu (le ciel sur la neige) :

- correction avec "moyenne des (Ri+Bi+Vi) / 3" :

Les teintes de la zone sélectionnée se rapproche pas mal du gris mais le
ciel semble délavé,

- correction avec "moyenne des Max(Ri, Bi, Vi)" :

Les teintes de la zone sélectionnée perdent de leur bleu mais sont assez
loin du gris, le ciel garde sa teinte bleue en plus clair. Par contre, ici,
l'image corrigée est systématiquement beaucoup plus claire que l'original.

Là où je me pose plus de question, c'est sur la répartition des coefficients
que j'ai faite en me basant sur l'écart entre la teinte non corrigée et le
gris d'intensité "équivalente". Compte tenu que la sensibilité de l'oeil
varie sur tout le spectre visible, il me semble qu'il faudrait appliquer un
coefficient de pondération prenant en compte cette variabilité ... mais je
ne vois pas vers quoi me diriger. Quel est le type de pondération qu'il
faudrait appliquer.

Cordialement.

Pierre.

Avatar
pehache
Kojak wrote:

http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html



Si j'ai bien compris, les valeurs RGB de cette table sont données dans
l'espace sRGB. Pourquoi à 6500K, qui est le point blanc de sRGB, on n'a pas
R=G=B%5 ?

--
pehache
enlever NOSPAM. etc... pour répondre / remove NOSPAM... to reply
http://pehache.free.fr/public.html

Avatar
Frédo Cralié
Je pense que la plupart du temps, c'est une simple modification de la pente
des trois courbes R,V,B de telle sorte que la zone indiquée soit neutre
(gris). A la manière de:
http://pehache.free.fr/TEMP/nega_whitebal.jpg
(c'est en afitun mauvais exemple car cette image nécessite plus qu'une
simple balance des blancs, mais c'est pour montrer l'effet sur les courbes)

Salut Péhache,


Est-ce par des simples courbes de transfert linéaires sur chaque couche
R V B similaires à celles que tu montres, qu'on enlève ce @^~#|$^|% de
masque orange des négas couleur ? Quitte à ensuite faire des
modifications de contrastes/luminosité/courbes/niveaux, etc.
D'ailleurs dans ton exemple, ne cherchais-tu pas à faire cela ?

Maintenant, pour faire une balance automatique c'est une autre paire de
manche :-)



Aucune confiance dans tout ce qui est automatique (pistolet automatique,
prélèvement bancaire automatique, etc.) ;-)

FC

1 2 3