import ij.IJ; import ij.gui.GenericDialog; import ij.macro.Interpreter; suffix = ".TIF"; prefix = "RAHOTEP"; east = new Point(1, 0); north = new Point(0, -1); west = new Point(-1, 0); south = new Point(0, 1); START_DIRECTION = north; TURNLEFT = false; GenericDialog gd = new GenericDialog("MRI - Spiral Image Reconstruction"); gd.addCheckbox("clockwise", !TURNLEFT); startEast = true; if (START_DIRECTION.equals(north)&&TURNLEFT) startEast=false; if (START_DIRECTION.equals(south)&&!TURNLEFT) startEast=false; gd.addCheckbox("start to the east", startEast); gd.addCheckbox("step", false); gd.pack(); gd.showDialog(); if (gd.wasCanceled()) return; clockwise = gd.getNextBoolean(); startEast = gd.getNextBoolean(); step = gd.getNextBoolean(); directory = IJ.getDirectory("Please select the source directory!"); if (directory==null) return; destDirectory = IJ.getDirectory("Please select the results directory!"); if (destDirectory==null) return; files = new File(directory).listFiles(); fileNameExpressions = new ArrayList(); for (file : files) { name = file.getName(); if (!name.endsWith(suffix) || !name.startsWith(prefix)) continue; name = name.replace(suffix, ""); components = name.split("f"); if (!(components.length==2)) continue; part1 = components[0]; components2 = components[1].split("d"); if (!(components2.length==2)) continue; expr = part1 + "f.*" + "d" + components2[1] + suffix; if (!fileNameExpressions.contains(expr)) fileNameExpressions.add(expr); } Interpreter.batchMode = true; counter = 1; number = fileNameExpressions.size(); for (expr : fileNameExpressions) { IJ.log("\\Update:Creating mosaic " + counter + " from " + number); targetFilename = expr.replace("f.*", "_"); IJ.run("Image Sequence...", "open=" + directory + files[0].getName()+" number=999999 starting=1 increment=1 scale=100 file=[] or=" + expr + " sort"); IJ.run("Create Spiral Image", "clockwise="+ clockwise + " startEast=" + startEast + " step=" + step); IJ.save(destDirectory + targetFilename); image = IJ.getImage(); image.changes = false; image.close(); image = IJ.getImage(); image.close(); IJ.showProgress(counter, number); counter++; } Interpreter.batchMode = false; IJ.showStatus("Finished creatinging mosaics. Created " + (counter-1) + " from " + number + " mosaics"); IJ.log("Finished creatinging mosaics.");