Java 快速操作ImagePlus中每个像素的方法
您好,我需要访问ImagePlus的每个像素进行图像分析 由于需要处理大量图像,我想知道是否有特别有效的方式/方法来访问和/或修改imagePlus中的每个像素? 我自然想到的唯一一个想法是在图像矩阵中循环使用double,这需要我几十秒才能在1000x1000图像上实现。 这是我的密码: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 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位浮点。