//load ImageJ %classpath config resolver scijava.public https://maven.scijava.org/content/groups/public %classpath add mvn net.imagej imagej 2.0.0-rc-67 //create ImageJ object ij = new net.imagej.ImageJ() ij.op().help("tubeness") import net.imglib2.type.numeric.real.FloatType tubeImg = ij.op().run("create.img", [400, 200], new FloatType()) randomAccess = tubeImg.randomAccess() randomAccess.setPosition(0, 0) randomAccess.setPosition(100, 1) while(randomAccess.getLongPosition(0) < tubeImg.dimension(0)){ x = randomAccess.getDoublePosition(0) y = (50 * Math.sin(x / 20)) as int for(offset in -10..10){ randomAccess.setPosition(100 + y - offset, 1) randomAccess.get().set(120) } randomAccess.fwd(0) } input = ij.op().run("create.img", tubeImg) ij.op().run("addPoissonNoise", input, tubeImg) ij.notebook().display(input) sigma = 5 / Math.sqrt(2) calibration = [1, 1] as int[] output = ij.op().run("create.img", input) ij.op().run("tubeness", output, input, sigma, calibration) ij.notebook().display(output)