使用ImageJ

时间:2018-02-21 15:26:57

标签: automation imagej imagej-macro

我最近发现了一些宏,以及它们如何能够让我在斐济/ 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");

这个宏的作用是导入存储在引用文件夹中的图像序列,使用Template matching plugin对齐图像堆栈,使用Z项目功能进行聚焦堆叠(图像>堆栈> Z项目...)并使用tiff扩展名将新生成的图像保存在同一文件夹中。

但是,我确实有一个包含大量子文件夹的常规文件夹,这些子文件夹中填充了tiff文件,因此在每个文件夹中逐个应用前一个宏也可能成为一项繁琐的任务。我遇到了处理批处理的macro

// "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 个答案:

答案 0 :(得分:0)

以防万一有人遇到这个问题,the answer can be found in the ImageJ forum