我想在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
}
答案 0 :(得分:4)
我使用的是医疗灰度图像,其中ColorProcesser不合适。在那种情况下,我使用
Opener opener = new Opener();
String imageFilePath = "somePath";
ImagePlus imp = opener.openImage(imageFilePath);
ImageProcesser ip = imp.getProcessor(); // ImageProcessor from ImagePlus
答案 1 :(得分: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参数允许打开文件夹选择窗口,您也可以使用文件路径作为参数。
答案 2 :(得分:1)
首先创建java.awt.Image
,然后使用它构建ColorProcessor
(ImageProcessor
)对象的子类。
Image myImage;
// instantiate myImage
ImageProcessor processor = new ColorProcessor(myImage);
答案 3 :(得分: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();
答案 4 :(得分:0)
答案很旧,所以可能会有一些变化,但我更喜欢使用静态方法IJ.openImage(java.lang.String path_to_file)http://rsb.info.nih.gov/ij/developer/api/ij/IJ.html。此方法返回ImagePlus对象。
我自己使用绝对文件路径,但我怀疑相对的文件也应该正常工作。如果您想要与ImagePlus关联的ImageProcessor,则调用getProcessor()。