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

How can I implement ImageJ's Non Local Means Denoising algorithm in Java code?

我正在尝试使用 ImageJ 中的 this java class 对 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()。

如有任何帮助,我们将不胜感激。

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

整个测试 class 现在看起来像这样:

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