Java 快速操作ImagePlus中每个像素的方法

Java 快速操作ImagePlus中每个像素的方法,java,pixels,imagej,getpixel,Java,Pixels,Imagej,Getpixel,您好,我需要访问ImagePlus的每个像素进行图像分析 由于需要处理大量图像,我想知道是否有特别有效的方式/方法来访问和/或修改imagePlus中的每个像素? 我自然想到的唯一一个想法是在图像矩阵中循环使用double,这需要我几十秒才能在1000x1000图像上实现。 这是我的密码: ImagePlus Iorg = IJ.openImage("Demo1.png"); int[] pix = Iorg.getPixel(5, 5); if(Iorg.getSlice() != 1) {

您好,我需要访问ImagePlus的每个像素进行图像分析

由于需要处理大量图像,我想知道是否有特别有效的方式/方法来访问和/或修改imagePlus中的每个像素? 我自然想到的唯一一个想法是在图像矩阵中循环使用double,这需要我几十秒才能在1000x1000图像上实现。 这是我的密码:

ImagePlus Iorg = IJ.openImage("Demo1.png");
int[] pix = Iorg.getPixel(5, 5);
if(Iorg.getSlice() != 1) {
    System.exit(0);
}

for(int w=0; w< Iorg.getDimensions()[0]; w++) {
    for(int h=0; h<Iorg.getDimensions()[1]; h++) {
       System.out.println(w + " x " + h);
       // DO what needs to be done      
    }
}
ImagePlus Iorg=IJ.openImage(“Demo1.png”);
int[]pix=Iorg.getPixel(5,5);
如果(Iorg.getSlice()!=1){
系统出口(0);
}
对于(int w=0;w对于(int h=0;h,因为图像是
uchar
,所以您要做的是

if(selected_pixel==255) 
     selected_pixel = 1; 
else 
     selected_pixel = 0 
您可以创建掩码,这会更容易。我不知道在java ImagePlus中,但在matlab中,它是
mask=image==255;


根据需要尝试使用这些类型的矩阵运算。我确信这些方法应该在库中的某个位置(如果ImagePlus是图像处理库。)

1)
System.out.print
将花费大量时间。2.尝试使用库方法,而不是循环。3)你在
内部尝试做什么做需要做的事情
?现在我想用每个像素除以最大强度,即255。事实上,我删除了System.out.print,现在需要1秒来循环整个图像e matrix:p对于除法,您可以使用
Iorg.getProcessor().multiply()
不循环地进行计算。我认为在进行此操作之前,您最好将图像设置为32位浮点。