如何在Java代码中实现ImageJ的非局部均值去噪算法?

时间:2016-12-24 02:30:10

标签: java image-processing imagej

我正在尝试使用ImageJ中的this java class来对我的图像进行去噪。

我的尝试引导我与these two classes (the github page linked to from ImageJ's website)一起参加此测试课程:

import ij.ImagePlus;
import ij.process.ByteProcessor;
import ij.process.ImageProcessor;

public class Test {

public static void main(String[] args) {
    String directory = "C:\\Users\\Speedy Octopus\\Desktop\\Noise Reduction\\Before Denoising.JPG";
    BufferedImage image = ImageUtility.loadImage(directory);

    ImageProcessor ip = new ByteProcessor(image.getWidth(), image.getHeight());
    String title = "New Image";
    ImagePlus imp = new ImagePlus(title, ip);

    NLMeansDenoising_ nlmd = new NLMeansDenoising_();
    nlmd.setup("final", imp);
    nlmd.run(ip);
    }
}

但我似乎无法正确完成nlmd.setup()。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我终于找到了问题的答案。

整个Test类现在看起来像这样:

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");
}
}