Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用imageJ输出每个点的强度?_Java_Python_Imagej_Imagej Macro - Fatal编程技术网

Java 如何使用imageJ输出每个点的强度?

Java 如何使用imageJ输出每个点的强度?,java,python,imagej,imagej-macro,Java,Python,Imagej,Imagej Macro,我想知道图片上每个点的强度,我应该调用哪个函数?假设我的图片的像素是125 x 125,我想要(0,0)到(125125)的强度,是否有一个函数,让我给出一个坐标,它会返回这样的强度 function(0,123) --> intensity? 在图像j中: result=getPixel(0123); 打印(结果); 从其他方法中,您可以使用,例如ImageProcessor#getPixel(intx,inty)方法(ImageJ1)或net.imglib2.Positionabl

我想知道图片上每个点的强度,我应该调用哪个函数?假设我的图片的像素是125 x 125,我想要(0,0)到(125125)的强度,是否有一个函数,让我给出一个坐标,它会返回这样的强度

function(0,123) --> intensity?
图像j中:

result=getPixel(0123);
打印(结果);
从其他方法中,您可以使用,例如
ImageProcessor#getPixel(intx,inty)
方法(ImageJ1)或
net.imglib2.Positionable#setPosition(int[]position)
net.imglib2.Sampler#get()
方法(ImageJ2)

例如,在Python中:

  • (使用ImageJ1结构)
从ij导入ij
imp=IJ.getImage()
结果=imp.getProcessor().getPixel(0,123)
打印结果
  • (使用ImageJ2结构和)
#@Dataset img
ra=img.randomAccess()
ra.setPosition([0123])
result=ra.get()
打印结果

ImageJ使用抽象类ImageProcessor,它“大致”是java.awt中BuffereImage的扩展

您可以在ImageProcessor中使用建议的方法之一:

public abstract int getPixel(int x, int y);
public abstract int get(int x, int y);
public abstract int get(int index);
但是当你想访问多通道(彩色图像)上的像素编码时,它会变得有点混乱

以下是使用光栅访问像素的简单方法:

ImageProcessor myimage = ... ;
BufferedImage image = myimage.getBufferedImage() ;
int intensity = image.getRaster().getSample(0, 0, 0) ; // Get the value.
image.getRaster().setSample(0, 0, 0, NewValue) ; // Set a new value.

这是最简单的方法,但不是最快的。最快的方法是直接访问存储在DataBuffer中的值,但是您必须处理类型。

对于彩色图像,您可以使用返回包含RGBA值的int[]数组的方法。太好了,我成功地编写了python代码来完成这项工作。谢谢