|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Bonjour,
J'aimerai bien comprendre davantage le principe de la méthode maximum d entropie. D'après une petite recherche sur google j'ai lu plusieurs articles, mais toujours j'ai pas bien compris et j'ai capté plusieurs informations d'une façon désordonnée. Généralement les distributions des probabilités sont subjectives ou dépendent de l'observateur. et quand nous avons des contraintes on parle de maximum d entropie. L'entropie est la mesure d'incertitude et elle est maximale quand toutes les probabilités sont égales. est ce que c'est juste ?? et c'est quoi le rapport de cette méthode avec le seuillage automatique ?? |
|
|
00
|
|
|
#2 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
![]() Citation:
Une manière plus concrète de voir les choses, c'est que l'entropie nous donne le nombre "idéal" de bits qu'il faut pour encoder l'information. Pour des images quelconques avec 256 niveaux de gris, c'est 8 bits. Maintenant, si tes images sont des scans d'articles de journaux, il y a en proportion beaucoup de noir, beaucoup de blanc et plus rarement des gris intermédiaires. On a donc au moins besoin de 1 bit (pour coder noir/blanc) et "un peu plus" pour les niveaux de gris. Ce qui nous donnerait une entropie du genre 1.578 (au hasard), bien loin des 8 bits du cas uniforme. Citation:
- E1 = les valeurs inférieurs au seuil - E2 = les valeurs supérieurs ou égales au seuil Si le seuil est mal choisi, l'un des deux ensembles contient très peu de pixels différents => son entropie est basse (proche de 0). L'information de toute l'image est presque intégralement contenu dans l'autre ensemble. Il faut donc trouver le seuil pour lequel l'information est équitablement répartie dans les 2 ensembles => chaque ensemble à une entropie élevée => la somme des 2 entropies est grande (propriété du log)
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#3 | ||||||
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Bonjour,
Citation:
Citation:
mais ici on a la probabilité des pixels noirs 45% et blanc 45% et 10% restante pour les niveaux de gris les probabilités ne sont pas égales donc l'entropie n'est pas maximale n'est ce pas Citation:
normalement on augmente la certitude non ? je comprends plus ![]() pourquoi on parle pas de minimum d'entropie j'ai lu quelque part que: plus un evenement est rare plus le gain d'information obtenu par sa réalisation est grand !! et pour le logarithme, son utilisation rend additif le gain totale d'information obtenu par la réalisation de plusieurs évènements indépendants.. c'est pour ça on fait une sommation pondérée des informations ? S(p)=sum(pi ln (1/pi)) = -sum(pi ln (pi)) |
||||||
|
|
00
|
|
|
#4 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
On parle du "maximum d'entropie" par rapport a un ensemble de choix possibles. Pour le seuillage, c'est le 'maximum d'entropie" par rapport au seuil choisi pour segmenter l'image. Citation:
=> E contient peu de valeurs "rares". Chaque valeur est importante. E est donc un très bon échantillon représentatif de la distribution. Pour notre seuillage, ca signifie que notre choix de seuil nous donnera une image binaire (donc composée de 0 et 1) qui sera un bon échantillon représentatif de l'image d'origine.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
donc concernant le seuillage dans une image
on peut dire : soit l'image f(x,y) où on represente les niveaux de gris des pixels (x,y) 0 < f(x,y) < 255 h(i) : histogramme et t = seuil de binarisation on a la sum pi=1 pi : la probabilité d'occurrence du pixel i le maximum d entropie essaie de maximiser l'information entre la partie proche à la couleur Noir et la partie proche à la couleur Blanche comme si on a deux classes une pour les Noirs et une pour les Blancs on calcule l'entropie pour chaque classe normalement le seuil choisi doit maximiser ces deux entropie. c'est à dire ce seuil nous donne la meilleure distribution des pixels dans une image. c'est ça ? peut-on trouver d'autre méthode de seuillage automatique basé sur la mesure de l'entropie ? |
|
|
00
|
|
|
#6 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Oui, c'est exactement cela.
Citation:
Une autre consiste a minimiser l'entropie de la différence "image d'origine" vs "image binaire". C'est à dire faire en sorte que la perte d'information soit la moins grande possible.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
merci bcp
|
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
bonjour,
me revoilà une autre fois je suis désolé mais j'ai eu une nouvelle question sur la différence entre la méthode du maximum d'entropie et la méthode Otsu pour le seuillage? d'après wikipedia le principe de Otsu est presque le même que celui du maximum d'entropie... mon but est de chercher les différentes méthodes de seuillage automatique et faire une comparaison. |
|
|
00
|
|
|
#9 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
Avec le maximum d'entropie, on cherche un seuil qui maximise l'information dans chaque ensemble. Avec Otsu, on cherche un seuil qui sépare le mieux les deux ensembles. Il y a une différence entre parler de probabilités (entropie) et de statistiques (Otsu). En probabilité on s'intéresse a la variable aléatoire (= au phénomène qu'on observe), alors qu'en statistique on s'intéresse aux données (= aux observations du phénomène). C'est subtil, mais différent.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
ouais c'est subtil
|
|
|
00
|
|
|
#11 | |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Citation:
j'ai encore une question concernant le principe de Minimum cross entropy MCE D(P,Q)=sum pi log(pi/qi) P et Q deux distributions differentes mais elles représentent quoi réellement?? je peux dire que P est la probabilité de l'occurrence d'un pixel i mais Q serait quoi alors ? ou bien P est l'image binaire et Q l'image d'origine? c'est flou? et est ce que je peux écrire D(P,Q)=sum pi log(pi/qi) tel que qi=1-pi seulement dans ce cas on peut avoir pi=qi d'où log1=0 D(P,Q)=0 |
|
|
|
00
|
|
|
#12 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
Q représente la la distribution des valeurs dans l'image partagée en 2 : une demi-image "valeur basse" et une demi-image "valeur haute". On cherche alors le meilleurs seuil, celui qui maximise la "ressemblance" entre les 2 distributions. Et donc qui minimise la perte d'information => qui minimise l'entropie de la différence. Citation:
![]() Si tu cherches a faire du seuillage, les distributions P,Q sont les histogrammes des images. Si "histo" est l'histogramme normalisé de P, alors : D(P,Q) = sum{ i.histo(i).Log( i.histo(i) / T(i).histo(i) ) }
= sum{ i.histo(i).Log( i / T(i) ) }
= sum{ i.histo(i).Log(i) } - sum{ i.histo(i).Log(T(i)) }
T_low = sum {i.histo(i)} pour i<seuil T_high = sum {i.histo(i)} pour i>=seuil d'où: D(P,Q) = sum{ i.histo(i).Log(i) } - sum_(i<seuil){ i.histo(i).Log(T_low) } - sum_(i>=seuil){ i.histo(i).Log(T_high) }(si je ne me suis pas trompé dans les calculs
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#13 | ||||||
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Citation:
Citation:
P et Q sont les histogramme P représente la distribution de l'image d'origine alors Q normalement représente la distribution de l'image binaire? qui est d'après ton explication T(i)? et T c'est l'histogramme cumulatif avec un petite modification T = sum i * h(i) c'est ça? voilà un petit code que j'ai écrit Code :
mais franchement toutes ces méthodes se ressemblent!! c subtil max d'entropie h1= - sum pi/pc1 ln (pi/pc1) et min cross entropy D= sum pi log (pi/qi) et qi ~= pc1 Citation:
Citation:
|
||||||
|
|
00
|
|
|
#14 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
Pour parler concrètement, P,Q sont des distributions = des lois de probabilité. -P représente la loi de probabilité qu'un pixel P(x,y) de l'image ait la valeur "i", avec "i" variant entre 0 et 255 (pour une image en niveau de gris). -Q représente la loi de probabilité qu'un pixel P(x,y) de l'image ait la valeur "j", avec "j" = low ou high (2 valeurs possibles, non connues a priori). Comme pour le maximum d'entropie, il faut imaginer qu'on teste toutes les valeurs de seuil possibles (0...255), et donc toutes les valeurs low/high correspondantes. On ensuite cherche le meilleur seuil. C'est la définition du mot "meilleur" qui est différente entre les 2 méthodes. Dans le max d'entropie, on considère que le meilleur seuil est celui pour lequel les deux sous-images "low" et "high" contiennent ensembles le plus d'information (indépendamment de l'info contenue originellement dans l'image). Dans la cross-entropy, on considère que le meilleur seuil est celui pour lequel on perd le moins d'information lors du seuillage. Citation:
C'est vrai que c'est subtil. La différence est dans la définition de "meilleur" seuil. C'est très subjectif.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#15 | ||
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Citation:
![]() seulement je voulais vérifier, puisqu'on a T_low = sum {i.histo(i)} pour i<seuil T_high = sum {i.histo(i)} pour i>=seuil ceci signifie que T_high=1-T_low ?? c'est presque le même truc dans le max d'entropie T_high et T_low représentent les classes C1 et C2 Citation:
mais juste pour vérifier encore le principe donc je calcule D(t) pour t allant de 0 à 255 D(t)=T(t)log(t) - P1 - P2; ensuite je choisie le seuil qui minimise D(t) best_t = min (D(t)); |
||
|
|
00
|
|
|
#16 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
T_low c'est la valeur moyenne (= l'intensité moyenne) de l'image basse. Idem pour T_high dans l'image haute. Il n'y a priori aucun rapport entre les 2 valeurs. Citation:
Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#17 | |
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Citation:
j'ai l'impression que j'ai compris seulement lors d'écrire mon code je me bloque puisque c'est la même chose alors C1+C2=1 c'est la condition de la probabilité normalement T_low + T_high = T(255) ? en fait j'ai écrit plusieurs codes et à chaque fois je ne trouve pas de resultat (toujours seuil=0) voilà l'algorithme de mon code // hn ==> c'est l'histogramme normalisé // hc ==> "histogramme cumulé" hc(1)=hn(1)*1; T(1)=hc(1)*log(1); pour i=2 à 256 hc(i)=hc(i-1)+(i*hn(i)); T(i)=T(i-1)+(hc(i)*log(i)); fin pour // D_low = zeros(1,256) ==> représente sum_(i<seuil){ i.histo(i).Log(T_low) } // D_high = zeros(1,256) ==> représente sum_(i>=seuil){ i.histo(i).Log(T_high) } // D = zeros(1,256) ==> représente D(P,Q) = sum{ i.histo(i).Log(i) } - D_low - D_high // Parcourir toutes les valeurs du seuil possibles pour seuil=1 à 256 T_low=T(seuil); pour i=1 à seuil D_low(seuil) = D_low(seuil)+(i*hc(i)*log(T_low)); fin pour T_high=T(156)-T_low; pour i=seuil+1 à 256 D_high(seuil) = D_high(seuil)+(i*hc(i)*log(T_high)); fin pour D(seuil)= T(seuil) - D_low(seuil) - D_high(seuil); fin pour // enfin on cherche le meilleur seuil |
|
|
|
00
|
|
|
#18 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 416 ![]() |
Citation:
T_low = sum{i.histo(i)} / sum{histo(i)}, pour i<seuil T_high = sum{i.histo(i)} / sum{histo(i)}, pour i>=seuil Exemple vite fait en java Code java :
![]() gauche : image orignale, 256 niveaux de gris milieu : seuillage au maximum d'entropie (seuil=105) droite : seuillage au minimum de cross-entropie (seuil=43)
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#19 | ||||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
Le physicien que je suis ne résiste pas à vous faire partager la vraie définition de l'entropie, qui éclairera le sujet :
Entropie Citation:
d'où l'application en termes de débruitage ou seuillage... Surtout lorsque conjointe à : Second law of thermodynamics Citation:
Principe d'entropie maximale Citation:
Principle of maximum entropy Citation:
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
||||
|
|
00
|
|
|
#20 | ||
|
Nouveau Membre du Club
![]() Inscription : novembre 2011 Messages : 60 ![]() |
Citation:
moi aussi j'aurais du faire attention car dans ton poste précédent tu m'as dit que c'est la valeur moyenne.. mais j'ai pas fait attention et bien mon erreur était c'est que le imEntropy je le calcule pour toutes les valeurs du seuil possible (imEntropy(t)) !! en tout cas merci pour ton aide je pense que mes idées sont claires J'ai testé des images avec le cross entropie et le max entropie, et comme tu me l'as dit "le meilleur seuil" reste subjectif Je m'amuse avec mes codes merci encore pseudocode ![]() Citation:
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com