Java 如何停止ImageJ';s非局部均值去噪算法使图像中的所有边缘都变成橙色?
我运行ImageJ插件的代码如下:Java 如何停止ImageJ';s非局部均值去噪算法使图像中的所有边缘都变成橙色?,java,imagej,Java,Imagej,我运行ImageJ插件的代码如下: import ij.IJ; import ij.ImagePlus; import ij.io.FileSaver; import ij.plugin.PlugIn; public class Test implements PlugIn { public static void main(String[] args) { Test test = new Test(); test.run("Denoise.ijm"); } @Ove
import ij.IJ;
import ij.ImagePlus;
import ij.io.FileSaver;
import ij.plugin.PlugIn;
public class Test implements PlugIn {
public static void main(String[] args) {
Test test = new Test();
test.run("Denoise.ijm");
}
@Override
public void run(String arg0) {
String directory = "C:\\Users\\Speedy Octopus\\Desktop\\10Cover Shots\\10.JPG";
ImagePlus imp = IJ.openImage(directory);
FileSaver fileSaver = new FileSaver(imp);
System.setProperty("plugins.dir", "C:\\Users\\Speedy Octopus\\Downloads\\ij150-win-java8\\ImageJ\\plugins");
IJ.run(imp, "Non-local Means Denoising", "sigma=5 smoothing_factor=1");
fileSaver.saveAsJpeg("C:\\Users\\Speedy Octopus\\Desktop\\10Cover Shots\\10edited.JPG");
}
}
运行“移除噪波”宏后,我的图像的所有边缘都变成橙色。我怎样才能阻止这种事情发生
编辑:当我使用实际的ImageJ.jar程序时也会发生这种情况
我需要先拆分频道,在使用复合频道时,插件中有一个bug 我在run方法中使用以下代码修复了它:
ImagePlus imp = IJ.openImage(directory);
FileSaver fileSaver = new FileSaver(imp);
System.setProperty("plugins.dir", LocalMethods.readFile("NonLocalMeansDir").get(0));
ImagePlus[] channels = ChannelSplitter.split(imp);
String[] channelTitles = new String[3];
for (int i = 0; i < channels.length; i++) {
ImagePlus channel = channels[i];
channelTitles[i] = channel.getTitle();
IJ.run(channel, "Non-local Means Denoising", "sigma=5 smoothing_factor=1");
}
IJ.run(imp, "Merge Channels...", "c1=[" + imp.getTitle() + " (" + channelTitles[0] + ") " + "] c2=[" + imp.getTitle() + " (" + channelTitles[1] + ") " + "] c3=[" + imp.getTitle() + " (" + channelTitles[2] + ") " + "] create");
IJ.saveAs("jpeg", directory);
ImagePlus imp=IJ.openImage(目录);
FileSaver FileSaver=新的FileSaver(imp);
System.setProperty(“plugins.dir”,LocalMethods.readFile(“NonLocalMeansDir”).get(0));
ImagePlus[]通道=通道拆分器。拆分(imp);
字符串[]channelTitles=新字符串[3];
对于(int i=0;i