2

我想在 java 中使用 ImageJ 框架分析图像。如何打开图像?我需要一个ImageProcessor对象才能生成直方图。这是我到目前为止的代码:

public void run(ImageProcessor ip) {
        int[] H = new int[256]; // histogram array
        int w = ip.getWidth();
        int h = ip.getHeight();

        for (int v = 0; v < h; v++) {
            for (int u = 0; u < w; u++) {
                int i = ip.getPixel(u, v);
                H[i] = H[i] + 1;
            }
        }

        // ... histogram H[] can now be used
    }
4

5 回答 5

4

我使用不适合 ColorProcesser 的医学灰度图像。在那种情况下,我使用

Opener opener = new Opener();  
String imageFilePath = "somePath";
ImagePlus imp = opener.openImage(imageFilePath);
ImageProcesser ip = imp.getProcessor(); // ImageProcessor from ImagePlus 
于 2012-07-19T00:21:11.763 回答
2

我没有看到任何指定您希望如何打开图像的内容,但我在下面添加了一些代码,这些代码将打开文件夹打开器窗口,您可以导航到图像文件夹(我认为它主要用于图像堆栈,但您可以只需将堆栈大小设置为 1,它应该可以打开单个图像)。

import ij.plugin.FolderOpener;

// Do this stuff in your run method
FolderOpener fo = new FolderOpener(); // create FolderOpener object
ImagePlus your_imgPlus; // create ImagePlus object
your_imgPlus = fo.open(null); // call FolderOpener.open()

open() 中的 null 参数允许打开文件夹选择窗口,您也可以使用文件路径作为参数。

于 2014-06-10T15:40:36.337 回答
1

首先创建一个java.awt.Image,然后用它来构造一个ColorProcessor(的子类ImageProcessor)对象。

Image myImage;
// instantiate myImage
ImageProcessor processor = new ColorProcessor(myImage);
于 2012-07-11T20:43:42.600 回答
1
 File inputFile = new File("someImage.png");
    Image someImage = null;
    try {
        someImage = ImageIO.read(inputFile);
    } catch (IOException e) {
        e.printStackTrace();
    }
    ImagePlus imagePlus = new ImagePlus();
    imagePlus.setImage(someImage);
    ColorProcessor processor = (ColorProcessor) imagePlus.getProcessor();
于 2016-03-25T11:27:11.450 回答
0

答案很旧,所以可能有一些变化,但我更喜欢使用静态方法 IJ.openImage(java.lang.String path_to_file) http://rsb.info.nih.gov/ij/developer/api/ij/ IJ.html。此方法返回一个 ImagePlus 对象。

我自己使用绝对文件路径,但我怀疑相对路径也应该可以正常工作。如果您希望 ImageProcessor 与 ImagePlus 相关联,请调用 getProcessor()。

于 2016-02-29T19:37:09.093 回答