Нужна помощь в обработке открытых изображений в ImageJ

Нужна помощь в обработке открытых изображений в ImageJ

Я создал макрос (на основе разных виденных мной макросов), который анализирует области частиц на моем изображении, автоматически копирует столбец «Площадь» в окне результатов в буфер обмена и отображает окно с вопросом, хочу ли я закрыть все окна.

Я хотел бы узнать, возможно ли применить этот макрос к изображениям, открытым в ImageJ, и получить все результаты (в основном Area) в одном окне результатов. Я не могу использовать функцию пакетной обработки, поскольку моя папка содержит наборы изображений, которые необходимо анализировать отдельно друг от друга (различные штаммы микроорганизмов), чтобы получить результаты для каждого штамма отдельно.

Вот мой макрос на данный момент. Я знаю, что он ужасен, но работает довольно хорошо:

run("8-bit");
run("Threshold...");
waitForUser;
getThreshold(lower,upper);
if (lower==-1)
    exit("Threshold was not set");
run("Convert to Mask");
run("Fill Holes");
run("Set Scale...", "distance=2.87 known=1 unit=µm global");
run("Analyze Particles...", "size=30-Infinity display exclude add");
close();
closeWin("ROI Manager");
closeWin("Threshold");
closeWin("Log");
String.resetBuffer;
  for (i=0; i<nResults; i++)
      String.append(getResult("Area", i) + "\n");
  String.copy(String.buffer);
waitForUser("Work done", "WORK DONE: Close all windows?");
if (isOpen("Results")) {
         selectWindow("Results"); 
         run("Close" );

function closeWin(winName)
{
    if (isOpen(winName)) 
    {
        selectWindow(winName);
        run("Close");
    }
}

решение1

В конце концов мне удалось это сделать, вот код, если кому интересно:

for (i=1; i<=nImages; i++) {
    selectImage(i);
    run("8-bit");
    run("Threshold...");
    waitForUser;
    getThreshold(lower,upper);
    if (lower==-1)
        exit("Threshold was not set");
    run("Convert to Mask");
    run("Fill Holes");
    run("Set Scale...", "distance=2.87 known=1 unit=µm global");
    run("Analyze Particles...", "size=30-Infinity display exclude add");
}
close("*");
closeWin("ROI Manager");
closeWin("Threshold");
closeWin("Log");
String.resetBuffer;
  for (i=0; i<nResults; i++)
      String.append(getResult("Area", i) + "\n");
  String.copy(String.buffer);
waitForUser("Work done", "WORK DONE: Close all windows?");
if (isOpen("Results")) {
         selectWindow("Results"); 
         run("Close" );

function closeWin(winName)
{
    if (isOpen(winName)) 
    {
        selectWindow(winName);
        run("Close");
    }
}

Связанный контент