1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
//Fonction permettant de récupérer le nombre
//d'images de ton stack dans la variable frames
Stack.getDimensions(width, height, channels, slices, frames);
//récupère le nom de l'image
imageName = getTitle();
//On crée un tableau qui aura la taille frames
//Un tableau est comme une variable qui peut contenir plusieurs valeurs
//Dans ton cas, on aura un tableau qui contiendra 134 valeurs
//Dans ce tableau, on va noter le numéro des frames qui ont une average intensity <150
//Pour celle, qui ont une intensité>150, on marquera le mot "trash"
//(ca peut être "trash" ou un autre mot, c'est juste pour détécter les images que l'on ne veut pas)
//le tableau sera du genre 0, 1, trash, 3, 4, trash, ...
numeroFrame = newArray(frames);
//la varible a va servir à compter les nombres d'images à conserver
a=0
for (i=0; i<frames; i++){
//se positionner sur la frame numéro i+1 (l'annotation des frames commence à 1 et pas à 0)
Stack.setFrame(i+1);
//on récupère la valeur d'intensité moyenne de la frame dans la variable mean
getStatistics(area, mean, min, max, std, histogram);
//si mean<150, inscrit le numéro de la frame dans le tableau à la position i
//et incrémente a de 1
if(mean<150){
numeroFrame[i]=i;
a++;
}
//si mean>150,inscrit "trash" dans le tableau à la position i
else numeroFrame[i]="trash";
}
//on crée un nouveau stack avec les même caractéristiques que le précédent
//mais avec un nombre de frame différent (ici le nombre de frames = a)
newImage("Corrected " + imageName, "8-bit grayscale-mode", width, height, channels, slices, a);
//Ensuite, on va faire un copier coller de toutes les frames ne correspondant pas à trash
//du stack initial vers le nouveau stack.
//La variable n va nous permettre de choisir la frame du nouveau stack
n=1;
for(i=0; i<frames; i++){
//Dans le tableau numeroFrame à la position i, si la valeur n'est pas égale à "trash"
if(toString(numeroFrame[i]) != "trash"){
//selectionne le stack initial, place toi sur la frame à copier et copie
selectWindow(imageName);
Stack.setFrame(i+1);
run("Copy");
//Selectionne le nouveau stack, place toi sur la bonne frame et colle
selectWindow("Corrected " + imageName);
Stack.setFrame(n);
run("Paste");
}
} |
Partager