Laura
Laura

Reputation: 1

Average pixel intensity ImageJ Macro Language

I have been tying to create an easy script that calculates the average intensity of a set of pixels selected (as points) by the user for each image in the same directory, and then returns a table associating each image name with the calculated average intensity. However, as I'm a really bad coder and a 100% beginner in this coding language, it is, of course, not working properly and after selecting the pixels of all the images in the folder, I have an error message (); that I don't understand and didn't manage to correct.. I have tried asking chatGpt several timesbut it didn't help .. either I had no error message but no table with my mean intensity of each image, or I had an error message...Could someone help me please?=)

The script:

// Définir le chemin du dossier contenant les images
inputDir = "D:/TFE/PHOTOS/Marqueur_Laura/CAL/J30/NOCHOC/5/NOHDR/1/";

// Obtenir la liste des fichiers dans le dossier
list = getFileList(inputDir);

// Initialiser une liste pour stocker les moyennes
meanList = newArray();
fileNameList = newArray();

 // Boucle pour traiter chaque image dans le dossier
for (i = 0; i < list.length; i++) {
     // Ouvrir l'image actuelle
    open(inputDir + list[i]);
    
 // Vérifier que l'image est bien ouverte
if (nImages == 0) {
        print("Erreur : Impossible d'ouvrir " + list[i]);
        continue;
    }

// Attendre que l'utilisateur trace les points
    waitForUser("Tracez plusieurs points sur l'image " + list[i] + ", puis cliquez sur OK.");
      // Initialiser les variables pour le calcul de la moyenne
    totalIntensity = 0;
    pointCount = 0;

// Vérifier si une sélection de points a été faite
    if (selectionType() != "point") {
        print("Erreur : Veuillez utiliser l'outil de sélection de points pour l'image " + list[i]);
        close();
        continue;
    }

     // Obtenir les coordonnées des points tracés
 roiManager("Measure");

     // Mesurer et obtenir les valeurs des points
    run("Measure");

     // Récupérer les résultats de la mesure
    nResults = nResults();

    for (j = 0; j < nResults; j++) {
        x = getResult("X", j);
        y = getResult("Y", j);
       pixelValue = getPixel(x, y);
     
         // Ajouter la valeur du pixel au total
      totalIntensity += pixelValue;
     pointCount += 1;
    
    // Afficher la valeur du pixel actuel
       print("Image " + list[i] + " - Point " + pointCount + " : (" + x + ", " + y + ") = " +        pixelValue);
  }

     // Calculer la moyenne des valeurs des pixels
  if (pointCount > 0) {
     mean = totalIntensity / pointCount;
      print("La valeur moyenne des pixels des points tracés pour " + list[i] + " est : " + mean);
        meanList = Array.concat(meanList, newArray(mean));
     fileNameList = Array.concat(fileNameList, newArray(list[i]));
   } else {
      print("Aucun point tracé sur " + list[i]);
     meanList = Array.concat(meanList, newArray(NaN));
     fileNameList = Array.concat(fileNameList, newArray(list[i]));
     }

     // Fermer l'image actuelle
 close();
}

  // Créer une nouvelle table des résultats
resultsTable = newArray("Image", "Valeur Moyenne");

  // Ajouter les données à la table
for (i = 0; i < meanList.length; i++) {
    setResult("Image", i, fileNameList[i]);
 setResult("Valeur Moyenne", i, meanList[i]);
}

  // Afficher la table des résultats
updateResults();
showResults();

Upvotes: 0

Views: 73

Answers (0)

Related Questions