Voici un script sous imageJ permettant de détecter des objets blancs sur fond noir (plusieurs objets dans chaque photo) et de mesurer leur aire, le script est utilisable en lot et enregistre le nom du fichier image en face de la valeur de l'objet.
Pour le lancer sur un lot d'image, utiliser "Process"->"Batch"->"Macro", copiez cette macro, indiquez le dossier contenant vos images (input) et celui dans lequel vous voulez que le script sauvegarde les images des détections de bord (pour pouvoir contrôler que la détection s'est bien déroulée). Si votre input correspond à votre output, vos images d'origines seront écrasées, il faut donc les sauvegarder en effectuant une copie dans un autre dossier.
Si les images contrôles ne vous conviennent pas, modifiez les paramètres du script (vous pouvez vous aider du recorder de macro présent dans imageJ)
Lancez ensuite le script, allez dans le tableau des résultats et sauvegardez le tableau.
run("8-bit"); //convertit l'image en 8-bit pour les analyses
setMinAndMax(138, 164);
run("Apply LUT");
//suppression des très petits outliers, modifier la valeur en fonction de votre appareil photo
run("Remove Outliers...", "radius=30 threshold=50 which=Bright");
run("Remove Outliers...", "radius=20 threshold=50 which=Dark");
//détection des objets
setAutoThreshold("Intermodes dark");
setAutoThreshold("Default dark");
setAutoThreshold("Default dark stack");
setAutoThreshold("Default dark");
setOption("BlackBackground", false);
run("Convert to Mask");
//rentrez ici un intervalle de dimensions correspondant approximativement aux tailles de vos objets, ou mettez cette ligne en commentaire pour ne pas éliminer d'outliers
run("Analyze Particles...", "size=500-120000 show=Outlines display");
//enregistrement du nom du fichier comme label de la donnée
dir = getDirectory("image");
name = getTitle;
index = lastIndexOf(name, ".");
if (index!=-1) name = substring(name, 0, index);
name = name + ".xls";
saveAs("Measurements", dir+name);
Aucun commentaire:
Enregistrer un commentaire