Forum général.cherche-logiciel Traitement d'images : Détection de tâches

Posté par  (site web personnel) . Licence CC By‑SA.
4
28
fév.
2014

Bonjour,

J'aimerais bien pouvoir trouver un logiciel (ou une lib, de préférence python) qui me permettrait de détecter un motif, dans mon cas des points sur une image (exemple d'image que je serais amené à traiter) pour les compter.

À l'image que j'ai posté, vous comprendrez que je ne suis pas vraiment informaticien à la base, je suis biologiste qui, bien que geekoïde (j'ai déjà écrit des scripts simples en python, et fait un peut de web), n'a pas du tout d'expérience dans ce type de programmation, et dans le traitement de l'image.

Voilà, si vous avez des tuyaux…

  • # Lien pas bon

    Posté par  . Évalué à 1.

    Cf titre…

    • [^] # Re: Lien pas bon

      Posté par  (site web personnel) . Évalué à 1.

      Le lien est bon, c'est le "ç" qui ne passe pas, un copié/collé et c'est bon

      http://françois.chaix.fr.eu.org/bordayl/bestioles.jpg

      Matthieu Gautier|irc:starmad

      • [^] # Re: Lien pas bon

        Posté par  (site web personnel) . Évalué à 1.

        C'est marrant que ça fasse ça. Je pense que c'est lié à l'encodage de linuxfr, vu que dans plein d'autres sites ça passe niquel…
        Par contre, je ne saurais pas vraiment diagnostiquer le problème pour savoir d'où ça vient exactement.

        La lumière pense voyager plus vite que quoi que ce soit d'autre, mais c'est faux. Peu importe à quelle vitesse voyage la lumière, l'obscurité arrive toujours la première, et elle l'attend.

    • [^] # Re: Lien pas bon

      Posté par  (site web personnel) . Évalué à 1.

      Ah ouais, c'est marrant, en fonction du navigateur le DNS avec des caractères non-ascii passe plus ou moins bien. Avec un navigateur basé sur webkit (uzbl dans mon cas), ça marche bien, alors que je viens de tester ave firefox, françois.chaix.fr.eu.org est transformé en fran%c3%a7ois.chaix.fr.eu.org.

      C'était un test. Le monde n'est pas encore prêt pour l'unicode.

      La lumière pense voyager plus vite que quoi que ce soit d'autre, mais c'est faux. Peu importe à quelle vitesse voyage la lumière, l'obscurité arrive toujours la première, et elle l'attend.

  • # Pas si simple

    Posté par  (site web personnel) . Évalué à 4.

    Attention, tu t'engages dans un problème plus difficile qu'il n'y paraît :)

    Mon conseil: optimise au maximum tes conditions d'acquisition: éclairage uniforme, cadrage parfait, fond uniforme…

    Ensuite tu pourras assez facilement obtenir une approximation de ce que tu veux avec une bibliothèque comme OpenCV.

    • [^] # Re: Pas si simple

      Posté par  (site web personnel) . Évalué à 1.

      Ok merci, je vais chercher du coté d'opencv.

      Pour l'acquisition, je vais tenter de faire de mon mieux. Et si je découpe le cercle dans lequel se trouvent mes points, est-ce que ça passerait mieux ?

      La lumière pense voyager plus vite que quoi que ce soit d'autre, mais c'est faux. Peu importe à quelle vitesse voyage la lumière, l'obscurité arrive toujours la première, et elle l'attend.

      • [^] # Re: Pas si simple

        Posté par  . Évalué à 2.

        Ce n'est pas forcément nécessaire mais ça peut aider. (et +1 pour optimiser les conditions de prises de vue)

        ImageJ est un logiciel bien connu en traitement d'image.
        Le page qui t'intéresse est celle-ci : http://rsbweb.nih.gov/ij/docs/guide/146-30.html

        Bon courage :-)

        • [^] # Re: Pas si simple

          Posté par  (site web personnel) . Évalué à 1.

          J'appuie pour l'utilisation de ce logiciel.

          J'ai utilisé ImageJ dans un cadre proche: comptage de porosité dans les matériaux.

          C'est très efficace et te permet de classer selon les critères de ton choix: circularité, surface…
          Une sortie des données graphique ou txt, impeccable!

          En plus s'est très bien documenté, et les calculs peuvent être massivement parallélisée si tu as besoin (traitement d'images 3D, nombreuses images). Si tu es un universitaire, n'hésites pas à demander au service informatique qui t'allouera les ressources sur leur serveur de calcul. De plus l'affichage déporté fonctionnant très bien, tu pourrais utiliser le serveur de ton bureau.

          Bon courage,

          • [^] # Re: Pas si simple

            Posté par  . Évalué à 2.

            Je le recommande aussi.

            J'ai l'ai utilisé pour déterminer la surface moyenne de quasi-nanoparticules de polyaniline inclue dans une matrice de polyéthylène. Cela fonctionne très bien.

  • # Gradient

    Posté par  (site web personnel) . Évalué à 2.

    Je pense que tu peux t'en sortir avec un algo naïf de même:
    tu fais une détection de contours, puis tu cherches tous les contours qui, dans l'image de base, contiennent des couleurs très sombres. Dans le cas particulier de ton image, ça marcherait.

    Enfin, dans l'image en question, une simple différence de contraste devrait marcher aussi bien.

  • # encore mieux....

    Posté par  (site web personnel) . Évalué à 3. Dernière modification le 02 mars 2014 à 21:45.

    Si tu prends toujours toujours de la même manière (même champ), tu peux faire un algo TRES TRES con mais qui va supair bien marcher (marge d'erreur inférieur à 5% au nez) :
    -> crop toujours au même endroit(PIL bonjour :) )
    -> binarisation de la partie intéressante de l'image (blanc si la luminosité du pixel est plus grande que %metsiciunevaleurquimarchebien%, noir sinon.
    -> tu comptes le nombre de pixels noir
    -> tu divises par le nombre moyen de pixels d'une drosophile, que tu as étalonné avant. (et que tu étalonnes de temps en temps.)

    -> tu peux aussi tester en remuant ton bazar et voir si le résultat reste le même.

    15 lignes au max.

    Pas besoin du fatras d'opencv pour ça.

    • [^] # Re: encore mieux....

      Posté par  (site web personnel) . Évalué à 4.

      Si tu prends toujours toujours de la même manière (même champ), tu peux faire un algo TRES TRES con mais qui va supair bien marcher (marge d'erreur inférieur à 5% au nez) :
      -> crop toujours au même endroit(PIL bonjour :) )
      -> binarisation de la partie intéressante de l'image (blanc si la luminosité du pixel est plus grande que %metsiciunevaleurquimarchebien%, noir sinon.
      -> tu comptes le nombre de pixels noir
      -> tu divises par le nombre moyen de pixels d'une drosophile, que tu as étalonné avant. (et que tu étalonnes de temps en temps.)

      -> tu peux aussi tester en remuant ton bazar et voir si le résultat reste le même.

      15 lignes au max.

      Pas besoin du fatras d'opencv pour ça.

      NB : j'avais pas vu que tu étais un peu débutant :

      from  PIL import Image
      
      image = Image.open("bestioles.jpg")
      crop = image.crop(-les bonnes dimansions-)   NB : si tu peux faire dans un récipient rectangulaire, ce sera plus facile.
      
      block = 0
      for w in crop.width:
         for h in crop.height : 
             if crop.getpixel(w,h)[0]<128 : #la tu fais sur la couche rouge.
                  black+=1
      
      print(black)

      Bref ;) moins de 15 lignes ;)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.