IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ImageJ Java Discussion :

[Analyze particles] Enregistrer le masque de seuillage


Sujet :

ImageJ Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Points : 16
    Points
    16
    Par défaut [Analyze particles] Enregistrer le masque de seuillage
    Bonjour à tous,

    nous sommes en train de développer une macro sous Fiji qui nous permettrait d'identifier et de compter/mesurer des particules sur une séquence d'images.

    Dans une partie, je voudrais faire une analyse de particules sur une image après détection des maximum locaux.
    Puis enregistrer le masque créé pour pouvoir squelettiser les particules restantes après le seuillage.

    J'ai essayer un peu tout, enregistrer le masque, renommer l'ID, ect mais je ne trouve pas la formule qui marche.

    Voici la partie du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    open(path);
    run("Enhance Contrast", "saturated=0.5 equalize histogram");//Enhance contrast with an analysis of the each slice’s histogram to make the adjustment
    run("Undistort Image", "list=C:\\Params.txt ); // Directory containing the 'Params.txt' file, created with Optic_Calib
    imageID=getImageID();
    title=getTitle();
    run("Gaussian Blur...", "sigma=1"); //Gaussian blur in order to eliminate some noise otherwise detected when finding local maxima, sigma=1 because of turbidity
    run("Find Maxima...", "noise=50 output=[Maxima Within Tolerance] exclude light"); // Noise tolerance fixed to 50, not to be changed or size estimation will be different
    
    run("Analyze Particles...", "size=250-1000 circularity=0.00-0.50 show=Masks display exclude include clear summarize"); 
            
    run("Duplicate...", "title=a["+title+"]");
    run("Skeletonize (2D/3D)");

    N'hésitez pas à me poser des questions pour mieux comprendre ce qu'on essaie de faire.

    Merci de votre aide !

  2. #2
    Membre habitué Avatar de Tchoukatroc
    Homme Profil pro
    Soupière
    Inscrit en
    Mai 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Soupière
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Bonjour,

    Si c'est juste enregistrer ton stack "mask" sur ton disque dur, il te suffit de rajouter une ligne pour récupérer le nom de l'image "mask" puis une seconde ligne pour l'enregistrer. Dans ce cas, le "mask" sera enregistré au format TIF dans le même dossier que l'image que tu traites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    open(path);
    run("Enhance Contrast", "saturated=0.5 equalize histogram");//Enhance contrast with an analysis of the each slice’s histogram to make the adjustment
    run("Undistort Image", "list=C:\\Params.txt ); // Directory containing the 'Params.txt' file, created with Optic_Calib
    imageID=getImageID();
    title=getTitle();
    run("Gaussian Blur...", "sigma=1"); //Gaussian blur in order to eliminate some noise otherwise detected when finding local maxima, sigma=1 because of turbidity
    run("Find Maxima...", "noise=50 output=[Maxima Within Tolerance] exclude light"); // Noise tolerance fixed to 50, not to be changed or size estimation will be different
    
    run("Analyze Particles...", "size=250-1000 circularity=0.00-0.50 show=Masks display exclude include clear summarize");
    
    run("Duplicate...", "title=a["+title+"]");
    
    maskTitle= getTitle();
    save((substring(path,0,lastIndexOf(path, File.separator)+1)) + maskTitle + ".tif") 
    
    run("Skeletonize (2D/3D)");
    Je ne sais pas si ça répond à ton problème.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Bonjour,
    merci Tchoukatroc pour ta réponse.

    C'est presque ça ! En fait quand je lance la macro, l'analyse de particules trouve par exemple 6 particules qui correspondent aux critères alors que si j'applique ligne par ligne, j'en observe que 2 sur le masque.
    Du coup j'ai l'impression que les fonctions ne prennent pas en compte les résultats des étapes précédentes.
    Faut-il aussi que j'enregistre sur le disque les résultats de l'analyse de maximum locaux ?
    Comment faire pour que la squelettisation se fasse sur le masque ?

    merci !!

  4. #4
    Membre habitué Avatar de Tchoukatroc
    Homme Profil pro
    Soupière
    Inscrit en
    Mai 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Soupière
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Bonjour,

    Est-ce que "Find maxima" te trouve le même résultat que tu lance la macro ou que tu fasses ligne par ligne? Si c'est le cas, le problème viens de la fonction "Analyze particles" et là, à part vérifier que tu ais bien les mêmes paramètres, je ne vois pas trop. Vérifie que ton image soit bien dans la même unité (pixel ou micron).
    Pour que ta macro marche, tu n'es pas obligé d'enregistrer les images sur le disque dur, c'est utile seulement si tu veux les réutiliser plus tard.
    Si tu veux que imageJ travaille sur une image précise, tu peux récupérer le nom de l'image dans une variable (dans ton cas, tu peux rajouter après la fonction "find maxima",

    puis avant la fonction "Skeletonize", tu rappelles l'image grâce à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selectWindow(maximaMask);

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Ok merci !!
    J'ai rajouté deux lignes entre chaque opération, pour enregistrer puis sélectionner l'image.
    Ça alourdi un peu le code, mais au moins ça marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Obtenir info après "Analyze Particles"
    Par fcjunic dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 28/01/2009, 18h16
  2. Masque de saisie "time" enregistré dans un entier.
    Par yupyupxav dans le forum IHM
    Réponses: 1
    Dernier message: 08/09/2008, 22h15
  3. Enregistrement masqué par pied de page
    Par day811 dans le forum IHM
    Réponses: 3
    Dernier message: 12/11/2007, 23h17
  4. Masque donnant le nombre d'enregistrements
    Par Gabe74 dans le forum Access
    Réponses: 6
    Dernier message: 08/09/2006, 14h19
  5. Réponses: 5
    Dernier message: 22/06/2006, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo