我從三個通道的.svs圖像中裁剪區域讀取並將作物保存爲.tiff圖像。目前,圖像正在使用單獨的RGB通道進行保存。在ImageJ中合併RGB通道Javascript宏
我裁剪圖像是這樣的:
var path = currentFolder + "images" + File.separator + imageName;
var options = new ImporterOptions();
options.setId(path);
options.setAutoscale(true);
options.setCrop(true);
options.setCropRegion(0, new Region(X, Y, deltaX, deltaY));
options.setColorMode(ImporterOptions.COLOR_MODE_COMPOSITE);
var croppedImage= new ImagePlus();
croppedImage= BF.openImagePlus(options);
print("cropped image class: " + croppedImage.getClass());
給
cropped image class: class [Lij.ImagePlus;
然後我保存的圖像:
IJ.saveAs(cropedImage, "tif", outputFileName);
我結束了三倍通道的圖像。
我要合併的通道。
我發現了兩個潛在的方法來做到這一點:
http://javadoc.imagej.net/ImageJ1/ij/plugin/RGBStackMerge.html
http://rsb.info.nih.gov/ij/developer/api/ij/ImagePlus.html#flatten--
我試圖croppedImage.flatten()
,並得到:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: Java class "[Lij.ImagePlus;" has no public instance field or method named "flatten".
我也嘗試導入RGBStackMerge
類:
importClass(Packages.ij.plugin.RGBStackMerge);
,做
finalImage = new ImagePlus();
finalImage = RGBStackMerge.mergeChannels(croppedImage, false);
print ("final image class: " + finalImage.getClass() + " length: " + finalImage.length);
但是這給:
Started svs_to_cropped_tiffs.js at Fri Jan 22 22:58:10 PST 2016 javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot call method "getClass" of null
第一種方法確實奏效!我試過第二個,得到了'javax.script.ScriptException:sun.org.mozilla.javascript.internal.EvaluatorException:找不到方法ij.plugin.RGBStackMerge。mergeChannels(loci.plugins.in.Colorizer $ 1,boolean)。'我接受你的答案,但如果你知道'mergeChannels'可能會出錯,我很想知道。 – abalter