je suis =E0 la recherche d'un script python qui permette de s=E9lectionner
une partie d'image, en l'occurence une tache afin d'en mesurer la
surface. La partie s=E9lectionn=E9e peut avoir n'importe quelle forme.
L'exp=E9rience de franklin permet de mesurer la longueur d'une mol=E9cule
par le biais d'une surface en connaissant le volume.
Le probl=E8me est que la surface est le plus souvent non circulaire. En
mesurant la surface d'une tache quelconque
sur une photo avec un rep=E8re pour conna=EEtre le nombre de pixels par
cm, on doit pouvoir r=E9ussir cette exp=E9rience =E0 tous les coups quelque-
soit la forme de la tache et faire une mesure plus pr=E9=E7ise.
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
Méta-MCI
Salut !
L'expérience de franklin permet de mesurer la longueur d'une molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que : - l'épaisseur est uniforme sur toute la tache (donc, en oubliant la capillarité, et les effets de bord) - toutes les molécules soient identiques - toutes les molécules soient rangées verticalement, selon un arrangement quasi-cristallin (douteux, pour un liquide) - on néglige l'espace inter-moléculaire (ou alors, on considère qu'il fait partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est courant de la décomposer en une multitude de rectangle, dont il suffira d'additionner les surfaces. Si la tâche est concave, il faut faire de même, après avoir décomposé la tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e. Nostalgie...
@+
Michel Claveau
Salut !
L'expérience de franklin permet de mesurer la longueur d'une
molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que :
- l'épaisseur est uniforme sur toute la tache (donc, en oubliant la
capillarité, et les effets de bord)
- toutes les molécules soient identiques
- toutes les molécules soient rangées verticalement, selon un arrangement
quasi-cristallin (douteux, pour un liquide)
- on néglige l'espace inter-moléculaire (ou alors, on considère qu'il fait
partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est courant de la
décomposer en une multitude de rectangle, dont il suffira d'additionner les
surfaces.
Si la tâche est concave, il faut faire de même, après avoir décomposé la
tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e.
Nostalgie...
L'expérience de franklin permet de mesurer la longueur d'une molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que : - l'épaisseur est uniforme sur toute la tache (donc, en oubliant la capillarité, et les effets de bord) - toutes les molécules soient identiques - toutes les molécules soient rangées verticalement, selon un arrangement quasi-cristallin (douteux, pour un liquide) - on néglige l'espace inter-moléculaire (ou alors, on considère qu'il fait partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est courant de la décomposer en une multitude de rectangle, dont il suffira d'additionner les surfaces. Si la tâche est concave, il faut faire de même, après avoir décomposé la tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e. Nostalgie...
@+
Michel Claveau
Eric
Bonjour,
pourquoi ne pas balayer la tache horizontalement, et de haut en bas, en comptant simplement le nombre de pixels qui vont bien.
on peut copier créer une matrice rectangulaire initialisée à zero de meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Il suffit de balayer la matrice, des qu'on rencontre un 1, c'est qu'on rentre dans la tache, on commence à compter les pixels, puis des qu'on rencontre de nouveaux un 1, c'est qu'on est sorti de la tache. On passe a la ligne suivante, et ainsi de suite.
il faut aussi de gerer le cas ou plusieurs 1 se suivent ...
pourquoi ne pas balayer la tache horizontalement, et de haut en bas,
en comptant simplement le nombre de pixels qui vont bien.
on peut copier créer une matrice rectangulaire initialisée à zero de
meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Il suffit de balayer la matrice, des qu'on rencontre un 1, c'est qu'on
rentre dans la tache, on commence à compter les pixels, puis des qu'on
rencontre de nouveaux un 1, c'est qu'on est sorti de la tache. On passe
a la ligne suivante, et ainsi de suite.
il faut aussi de gerer le cas ou plusieurs 1 se suivent ...
pourquoi ne pas balayer la tache horizontalement, et de haut en bas, en comptant simplement le nombre de pixels qui vont bien.
on peut copier créer une matrice rectangulaire initialisée à zero de meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Il suffit de balayer la matrice, des qu'on rencontre un 1, c'est qu'on rentre dans la tache, on commence à compter les pixels, puis des qu'on rencontre de nouveaux un 1, c'est qu'on est sorti de la tache. On passe a la ligne suivante, et ainsi de suite.
il faut aussi de gerer le cas ou plusieurs 1 se suivent ...
L'expérience de franklin permet de mesurer la longueur d'une molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que : - l'épaisseur est uniforme sur toute la tache (donc, en oubliant la capillarité, et les effets de bord) - toutes les molécules soient identiques - toutes les molécules soient rangées verticalement, selon un arran gement quasi-cristallin (douteux, pour un liquide) - on néglige l'espace inter-moléculaire (ou alors, on considère q u'il fait partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est couran t de la décomposer en une multitude de rectangle, dont il suffira d'additionner les surfaces. Si la tâche est concave, il faut faire de même, après avoir décom posé la tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e. Nostalgie...
@+
Michel Claveau
La surface est plane: la molécule possède une partie hydrophobe et une partie hydrophile , donc elle se dispose sur l'eau la tête hydrophile vers le bas et la tête hydrphobe vers l'air.
Le principe à retenir est de dessiner sur le graphique une série de segments qui vont entourer la zone où se trouve la tache (molécule) et fermer cette série. Une fois ceci réalisé, il suffit de mesurer la surface en pixel/cm2 par exemple.
Existe-t-il un objet image possédant une méthode qui permette de découper cette zone et d'en tirer l'information surface. Je n'ai rien vu sur PIL.
Philippe DALET
On 23 juin, 16:55, "Méta-MCI" <enleverlesX.X...@XmclaveauX.com> wrote:
Salut !
L'expérience de franklin permet de mesurer la longueur d'une
molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que :
- l'épaisseur est uniforme sur toute la tache (donc, en oubliant la
capillarité, et les effets de bord)
- toutes les molécules soient identiques
- toutes les molécules soient rangées verticalement, selon un arran gement
quasi-cristallin (douteux, pour un liquide)
- on néglige l'espace inter-moléculaire (ou alors, on considère q u'il fait
partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est couran t de la
décomposer en une multitude de rectangle, dont il suffira d'additionner les
surfaces.
Si la tâche est concave, il faut faire de même, après avoir décom posé la
tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e.
Nostalgie...
@+
Michel Claveau
La surface est plane: la molécule possède une partie hydrophobe et une
partie hydrophile , donc elle se dispose sur l'eau la tête hydrophile
vers le bas et la tête hydrphobe vers l'air.
Le principe à retenir est de dessiner sur le graphique une série de
segments qui vont entourer la zone où se trouve la tache (molécule)
et fermer cette série. Une fois ceci réalisé, il suffit de mesurer la
surface en pixel/cm2 par exemple.
Existe-t-il un objet image possédant une méthode qui permette de
découper cette zone et d'en tirer l'information surface. Je n'ai rien
vu sur PIL.
L'expérience de franklin permet de mesurer la longueur d'une molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que : - l'épaisseur est uniforme sur toute la tache (donc, en oubliant la capillarité, et les effets de bord) - toutes les molécules soient identiques - toutes les molécules soient rangées verticalement, selon un arran gement quasi-cristallin (douteux, pour un liquide) - on néglige l'espace inter-moléculaire (ou alors, on considère q u'il fait partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est couran t de la décomposer en une multitude de rectangle, dont il suffira d'additionner les surfaces. Si la tâche est concave, il faut faire de même, après avoir décom posé la tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e. Nostalgie...
@+
Michel Claveau
La surface est plane: la molécule possède une partie hydrophobe et une partie hydrophile , donc elle se dispose sur l'eau la tête hydrophile vers le bas et la tête hydrphobe vers l'air.
Le principe à retenir est de dessiner sur le graphique une série de segments qui vont entourer la zone où se trouve la tache (molécule) et fermer cette série. Une fois ceci réalisé, il suffit de mesurer la surface en pixel/cm2 par exemple.
Existe-t-il un objet image possédant une méthode qui permette de découper cette zone et d'en tirer l'information surface. Je n'ai rien vu sur PIL.
Philippe DALET
Laurent Pointal
On 23 juin, 16:55, "Méta-MCI" wrote:
Salut !
L'expérience de franklin permet de mesurer la longueur d'une molécule par le biais d'une surface en connaissant le volume. C'est jouable, mais seulement en supposant que :
- l'épaisseur est uniforme sur toute la tache (donc, en oubliant la capillarité, et les effets de bord) - toutes les molécules soient identiques - toutes les molécules soient rangées verticalement, selon un arrangement quasi-cristallin (douteux, pour un liquide) - on néglige l'espace inter-moléculaire (ou alors, on considère qu'il fait partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est courant de la décomposer en une multitude de rectangle, dont il suffira d'additionner les surfaces. Si la tâche est concave, il faut faire de même, après avoir décomposé la tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e. Nostalgie...
@+
Michel Claveau
La surface est plane: la molécule possède une partie hydrophobe et une partie hydrophile , donc elle se dispose sur l'eau la tête hydrophile vers le bas et la tête hydrphobe vers l'air.
Le principe à retenir est de dessiner sur le graphique une série de segments qui vont entourer la zone où se trouve la tache (molécule) et fermer cette série. Une fois ceci réalisé, il suffit de mesurer la surface en pixel/cm2 par exemple.
Existe-t-il un objet image possédant une méthode qui permette de découper cette zone et d'en tirer l'information surface. Je n'ai rien vu sur PIL.
On 23 juin, 16:55, "Méta-MCI" <enleverlesX.X...@XmclaveauX.com> wrote:
Salut !
L'expérience de franklin permet de mesurer la longueur d'une
molécule par le biais d'une surface en connaissant le volume.
C'est jouable, mais seulement en supposant que :
- l'épaisseur est uniforme sur toute la tache (donc, en oubliant la
capillarité, et les effets de bord)
- toutes les molécules soient identiques
- toutes les molécules soient rangées verticalement, selon un arrangement
quasi-cristallin (douteux, pour un liquide)
- on néglige l'espace inter-moléculaire (ou alors, on considère qu'il fait
partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est courant de la
décomposer en une multitude de rectangle, dont il suffira d'additionner les
surfaces.
Si la tâche est concave, il faut faire de même, après avoir décomposé la
tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e.
Nostalgie...
@+
Michel Claveau
La surface est plane: la molécule possède une partie hydrophobe et une
partie hydrophile , donc elle se dispose sur l'eau la tête hydrophile
vers le bas et la tête hydrphobe vers l'air.
Le principe à retenir est de dessiner sur le graphique une série de
segments qui vont entourer la zone où se trouve la tache (molécule)
et fermer cette série. Une fois ceci réalisé, il suffit de mesurer la
surface en pixel/cm2 par exemple.
Existe-t-il un objet image possédant une méthode qui permette de
découper cette zone et d'en tirer l'information surface. Je n'ai rien
vu sur PIL.
Peut-être par là:
http://filters.sourceforge.net/
http://filters.sourceforge.net/wikifilters/index.php/Tutorial_Python
L'expérience de franklin permet de mesurer la longueur d'une molécule par le biais d'une surface en connaissant le volume. C'est jouable, mais seulement en supposant que :
- l'épaisseur est uniforme sur toute la tache (donc, en oubliant la capillarité, et les effets de bord) - toutes les molécules soient identiques - toutes les molécules soient rangées verticalement, selon un arrangement quasi-cristallin (douteux, pour un liquide) - on néglige l'espace inter-moléculaire (ou alors, on considère qu'il fait partie de la molécule)
Pour en revenir à ta question, si la tâche est convexe, il est courant de la décomposer en une multitude de rectangle, dont il suffira d'additionner les surfaces. Si la tâche est concave, il faut faire de même, après avoir décomposé la tâche en plusieurs sous-tâches convexes.
En ces périodes de fin d'annéee scolaire, ça me rappelle mes cours de 4e. Nostalgie...
@+
Michel Claveau
La surface est plane: la molécule possède une partie hydrophobe et une partie hydrophile , donc elle se dispose sur l'eau la tête hydrophile vers le bas et la tête hydrphobe vers l'air.
Le principe à retenir est de dessiner sur le graphique une série de segments qui vont entourer la zone où se trouve la tache (molécule) et fermer cette série. Une fois ceci réalisé, il suffit de mesurer la surface en pixel/cm2 par exemple.
Existe-t-il un objet image possédant une méthode qui permette de découper cette zone et d'en tirer l'information surface. Je n'ai rien vu sur PIL.
on peut copier créer une matrice rectangulaire initialisée à zero de meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Je pense qu'on s'en sortirai mieux en mettant à 1 ce qui est _dans_ la tache (bordure comprise). Ainsi en comptant le nombre de 1 on a le nombre de pixel, et la surface. Ceci dit, je pense que tout le monde ici aurait pensé à un truc aussi simple. Donc ça ne résoud pas le problème.
En quoi l'algo que je viens de proposer ne résoud pas le problème?
-- "Beaucoup de gens achètent des choses dont ils n'ont pas besoin avec de l'argent qu'il n'ont pas (crédits & emprunts) pour impressionner des gens qu'ils n'aiment pas." Inconnu
Eric wrote:
Bonjour,
Bonjour,
on peut copier créer une matrice rectangulaire initialisée à zero de
meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Je pense qu'on s'en sortirai mieux en mettant à 1 ce qui est _dans_ la tache
(bordure comprise).
Ainsi en comptant le nombre de 1 on a le nombre de pixel, et la surface.
Ceci dit, je pense que tout le monde ici aurait pensé à un truc aussi
simple. Donc ça ne résoud pas le problème.
En quoi l'algo que je viens de proposer ne résoud pas le problème?
--
"Beaucoup de gens achètent des choses dont ils n'ont pas besoin
avec de l'argent qu'il n'ont pas (crédits & emprunts)
pour impressionner des gens qu'ils n'aiment pas."
Inconnu
on peut copier créer une matrice rectangulaire initialisée à zero de meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Je pense qu'on s'en sortirai mieux en mettant à 1 ce qui est _dans_ la tache (bordure comprise). Ainsi en comptant le nombre de 1 on a le nombre de pixel, et la surface. Ceci dit, je pense que tout le monde ici aurait pensé à un truc aussi simple. Donc ça ne résoud pas le problème.
En quoi l'algo que je viens de proposer ne résoud pas le problème?
-- "Beaucoup de gens achètent des choses dont ils n'ont pas besoin avec de l'argent qu'il n'ont pas (crédits & emprunts) pour impressionner des gens qu'ils n'aiment pas." Inconnu
Eric
Eric wrote:
Bonjour,
Bonjour,
on peut copier créer une matrice rectangulaire initialisée à zero de meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Je pense qu'on s'en sortirai mieux en mettant à 1 ce qui est _dans_ la tache (bordure comprise). Ainsi en comptant le nombre de 1 on a le nombre de pixel, et la surface. Ceci dit, je pense que tout le monde ici aurait pensé à un truc aussi simple. Donc ça ne résoud pas le problème.
En quoi l'algo que je viens de proposer ne résoud pas le problème?
peut être parce qu'en mettant a 1 l'interieur de la tache, tu fais tout le boulot. Le plus simple a mon avis est d'imiter les algo de remplissage de formes que l'on trouve dans les logiciels de retouche bitmap...
Eric
Eric wrote:
Bonjour,
Bonjour,
on peut copier créer une matrice rectangulaire initialisée à zero de
meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Je pense qu'on s'en sortirai mieux en mettant à 1 ce qui est _dans_ la tache
(bordure comprise).
Ainsi en comptant le nombre de 1 on a le nombre de pixel, et la surface.
Ceci dit, je pense que tout le monde ici aurait pensé à un truc aussi
simple. Donc ça ne résoud pas le problème.
En quoi l'algo que je viens de proposer ne résoud pas le problème?
peut être parce qu'en mettant a 1 l'interieur de la tache, tu fais tout
le boulot. Le plus simple a mon avis est d'imiter les algo de
remplissage de formes que l'on trouve dans les logiciels de retouche
bitmap...
on peut copier créer une matrice rectangulaire initialisée à zero de meme dimension que la tache, puis mettre a 1 les bordures de la taches.
Je pense qu'on s'en sortirai mieux en mettant à 1 ce qui est _dans_ la tache (bordure comprise). Ainsi en comptant le nombre de 1 on a le nombre de pixel, et la surface. Ceci dit, je pense que tout le monde ici aurait pensé à un truc aussi simple. Donc ça ne résoud pas le problème.
En quoi l'algo que je viens de proposer ne résoud pas le problème?
peut être parce qu'en mettant a 1 l'interieur de la tache, tu fais tout le boulot. Le plus simple a mon avis est d'imiter les algo de remplissage de formes que l'on trouve dans les logiciels de retouche bitmap...
Eric
none
Rebonjour, je me suis penché sur ton problème, voila un petit truc en python qui calcule la surface d'une tache sur une image en noir et blanc, delimitée par un contour blanc ( ou l'inverse ) et sur fond noir.
for x in range(0,image.size[0]) : tableau = [0 ] for y in range (0,image.size[1]) : pixel = image.getpixel((x,y)) if pixel!=ancienPixel : tableau.append(0) tableau[-1] = tableau[-1] + 1 ancienPixel = pixel tab.append(tableau)
return tab
def calculeSurface (tab): somme = 0 for ligne in tab : nbSections = len(ligne) if nbSections == 1: continue if nbSections == 3: somme += ligne[1] continue if nbSections == 5: somme += ligne[1] + ligne[2] + ligne[3] return somme
def main():
fname = "tache.tga" im = Image.open(fname) print "Taille de l'image:",im.size
tab = decoupeImage(im)
print "Surface en nombre de pixels:",calculeSurface(tab)
###################
main()
Rebonjour, je me suis penché sur ton problème,
voila un petit truc en python qui calcule la surface d'une tache sur une
image en noir et blanc, delimitée par un contour blanc ( ou l'inverse )
et sur fond noir.
for x in range(0,image.size[0]) :
tableau = [0 ]
for y in range (0,image.size[1]) :
pixel = image.getpixel((x,y))
if pixel!=ancienPixel :
tableau.append(0)
tableau[-1] = tableau[-1] + 1
ancienPixel = pixel
tab.append(tableau)
return tab
def calculeSurface (tab):
somme = 0
for ligne in tab :
nbSections = len(ligne)
if nbSections == 1:
continue
if nbSections == 3:
somme += ligne[1]
continue
if nbSections == 5:
somme += ligne[1] + ligne[2] + ligne[3]
return somme
def main():
fname = "tache.tga"
im = Image.open(fname)
print "Taille de l'image:",im.size
tab = decoupeImage(im)
print "Surface en nombre de pixels:",calculeSurface(tab)
Rebonjour, je me suis penché sur ton problème, voila un petit truc en python qui calcule la surface d'une tache sur une image en noir et blanc, delimitée par un contour blanc ( ou l'inverse ) et sur fond noir.
for x in range(0,image.size[0]) : tableau = [0 ] for y in range (0,image.size[1]) : pixel = image.getpixel((x,y)) if pixel!=ancienPixel : tableau.append(0) tableau[-1] = tableau[-1] + 1 ancienPixel = pixel tab.append(tableau)
return tab
def calculeSurface (tab): somme = 0 for ligne in tab : nbSections = len(ligne) if nbSections == 1: continue if nbSections == 3: somme += ligne[1] continue if nbSections == 5: somme += ligne[1] + ligne[2] + ligne[3] return somme
def main():
fname = "tache.tga" im = Image.open(fname) print "Taille de l'image:",im.size
tab = decoupeImage(im)
print "Surface en nombre de pixels:",calculeSurface(tab)
###################
main()
none
ps: il doit y avoir plus efficace, mais bon ...
eric
ps2: la solution est plus tordue que ma premiere solution avec la matrice ...
ps: il doit y avoir plus efficace, mais bon ...
eric
ps2: la solution est plus tordue que ma premiere solution avec la
matrice ...
ps2: la solution est plus tordue que ma premiere solution avec la matrice ...
pdalet
On 25 juin, 19:46, none <""eric"@(none)"> wrote:
ps: il doit y avoir plus efficace, mais bon ...
eric
ps2: la solution est plus tordue que ma premiere solution avec la matrice ...
Merci pour tous ces renseignements. Le module http://filters.sourceforge.net/ et PIL doivent me permettre de résoudre ce problème. Filters doit me permettre d'automatiser la recherche de la surface sur une image et PIL le calcul de cette surface. Ph DALET
On 25 juin, 19:46, none <""eric"@(none)"> wrote:
ps: il doit y avoir plus efficace, mais bon ...
eric
ps2: la solution est plus tordue que ma premiere solution avec la
matrice ...
Merci pour tous ces renseignements.
Le module http://filters.sourceforge.net/ et PIL doivent me permettre
de résoudre ce problème.
Filters doit me permettre d'automatiser la recherche de la surface sur
une image et PIL le calcul de cette surface.
Ph DALET
ps2: la solution est plus tordue que ma premiere solution avec la matrice ...
Merci pour tous ces renseignements. Le module http://filters.sourceforge.net/ et PIL doivent me permettre de résoudre ce problème. Filters doit me permettre d'automatiser la recherche de la surface sur une image et PIL le calcul de cette surface. Ph DALET