Автоматизируйте задачи, используя макросы в изображениях, помещенных в папки и подпапки, используя ImageJ

Недавно я обнаружил макросы и то, как они могут удивительно облегчить мою жизнь, работая на Фиджи /ImageJ.

Я создал этот макрос:

run("Image Sequence...", "open=/home/mario/Desktop/prueba/1/Image-000002.tif");
selectWindow("1");
//setTool("rectangle");
makeRectangle(406, 346, 1132, 845);
run("Z Project...", "projection=[Average Intensity]");
saveAs("Tiff", "/home/mario/Desktop/prueba/1/AVG_1.tif");

Этот макрос выполняет импорт последовательности изображений, хранящейся в указанной папке, для выравнивания стека изображений с помощью плагина соответствия шаблонов, для наложения фокусировки с использованием функции Z Project (Изображение> Стеки> Z Project...) и для сохраните вновь созданное изображение в той же папке, используя расширение TIFF.

Тем не менее, у меня есть общая папка с множеством подпапок, заполненных TIFF-файлами, поэтому применение одного за другим предыдущего макроса в каждой папке также может стать утомительной задачей. Я сталкивался с этим макросом, который имеет дело с пакетной обработкой:

// "BatchProcessFolders"
//
// This macro batch processes all the files in a folder and any
// subfolders in that folder. In this example, it runs the Subtract 
// Background command of TIFF files. For other kinds of processing,
// edit the processFile() function at the end of this macro.
   requires("1.33s"); 
   dir = getDirectory("Choose a Directory ");
   setBatchMode(true);
   count = 0;
   countFiles(dir);
   n = 0;
   processFiles(dir);
   //print(count+" files processed");

   function countFiles(dir) {
      list = getFileList(dir);
      for (i=0; i<list.length; i++) {
          if (endsWith(list[i], "/"))
              countFiles(""+dir+list[i]);
          else
              count++;
      }
  }

   function processFiles(dir) {
      list = getFileList(dir);
      for (i=0; i<list.length; i++) {
          if (endsWith(list[i], "/"))
              processFiles(""+dir+list[i]);
          else {
             showProgress(n++, count);
             path = dir+list[i];
             processFile(path);
          }
      }
  }

  function processFile(path) {
       if (endsWith(path, ".tif")) {
           open(path);
           run("Subtract Background...", "rolling=50 white");
           save(path);
           close();
      }
  }

Тем не менее, я не знаю, как объединить мои автоматизированные задачи, написанные в моем макросе, с последним, так как я не эксперт в кодировании.

Подводя итог, я хотел бы запускать свой макрос в каждой папке и подпапке автоматически из корневого каталога моего выбора.

Кто-нибудь может отредактировать и объединить предыдущие макросы, чтобы выполнить мои требования?

1 ответ

Если кто-то сталкивался с этим вопросом, ответ можно найти на форуме ImageJ.

Другие вопросы по тегам