簡體   English   中英

如何阻止ImageJ的非局部均值去噪算法使圖像的所有邊緣變為橙色?

[英]How can I stop ImageJ's Non-Local Means denoising algorithm from making all the edges in an image orange?

我運行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");

}

@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程序時,也會發生這種情況

起始圖片 去噪圖像

我需要首先拆分渠道,使用復合材料時插件中存在錯誤。

我最終在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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM