我想在imageJ中显示模糊的图像。为什么这不起作用?

时间:2011-08-23 13:53:28

标签: java imagej

我对imageJ非常新,但知道一点Java。

基本上我想从OpenDialog打开一个文件显示图像,然后模糊图像并显示生成的模糊图像。我的程序编译,但两个图像看起来相同。有人可以帮忙吗?如何使程序显示模糊且不模糊的图像?

import ij.*;
import ij.io.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.*;
import java.util.*;
import java.io.*;


public class opens_ implements PlugIn {

    ImagePlus imp;

    public void run(String arg){
    OpenDialog od = new OpenDialog("Open.....", arg);
    Opener op = new Opener();
    String directory = od.getDirectory();
    String filename = od.getFileName();
    if (filename==null) return ;
    imp =  op.openImage(directory, filename);
    imp.show(); 

    ImageProcessor improc = imp.getProcessor();
    improc.smooth();

    ImagePlus alter = new ImagePlus("alter", improc) ;
    alter.show();


    }

}

由于

贝特曼

1 个答案:

答案 0 :(得分:4)

当您在.smooth()上致电improc时,该通话会改变ImageProcessor所包含的图片数据,该图片数据由原始ImagePlus显示。然后,您基于相同的ImagePlus创建新的ImageProcessor,因此当然是模糊的图像而不是原始图像。如果您不希望更改原件,则可以在平滑之前复制ImageProcessor,例如通过更改线:

ImageProcessor improc = imp.getProcessor();

......来:

ImageProcessor improc = imp.getProcessor().duplicate();

更新:当我测试你的代码时,我看到两个图像都模糊了。如果您仍然看到原始图像,请尝试在运行方法的末尾添加以下内容:

imp.updateAndDraw()
alter.updateAndDraw()