Java 正在创建空白图像 导入ij.*; 导入ij.gui.GenericDialog; 导入ij.gui.NewImage; 导入ij.plugin.FolderOpener; 导入ij.plugin.filter.PlugInFilter; 导入静态ij.pl
正在创建空白图像Java 正在创建空白图像 导入ij.*; 导入ij.gui.GenericDialog; 导入ij.gui.NewImage; 导入ij.plugin.FolderOpener; 导入ij.plugin.filter.PlugInFilter; 导入静态ij.pl,java,imagej,Java,Imagej,正在创建空白图像 导入ij.*; 导入ij.gui.GenericDialog; 导入ij.gui.NewImage; 导入ij.plugin.FolderOpener; 导入ij.plugin.filter.PlugInFilter; 导入静态ij.plugin.filter.PlugInFilter.DOES_8G; 需要导入静态ij.plugin.filter.PlugInFilter.STACK_; 导入ij.过程。*; 导入java.awt.image.buffereImage; 导入
导入ij.*;
导入ij.gui.GenericDialog;
导入ij.gui.NewImage;
导入ij.plugin.FolderOpener;
导入ij.plugin.filter.PlugInFilter;
导入静态ij.plugin.filter.PlugInFilter.DOES_8G;
需要导入静态ij.plugin.filter.PlugInFilter.STACK_;
导入ij.过程。*;
导入java.awt.image.buffereImage;
导入java.awt.image.WritableRaster;
导入java.io.File;
导入java.io.IOException;
导入javax.imageio.imageio;
*计算位于同一位置的像素的平均值
*在堆栈的每个切片中定位,并将显示平均值的切片添加到堆栈的末尾。
公共类侦察器2d实现插件填充器{
受保护的ImagePlus imp;
int Bin_编号、Bin_大小;
int[]平均值;
公共整数设置(字符串arg、ImagePlus imp){
this.imp=imp;
返回是否需要\u 8G+堆栈\u;
}
公共无效运行(图像处理器ip){
GenericDialog gd0=新建GenericDialog(“参数”);
gd0.addNumericField(“仓单编号”,仓单编号,0);
gd0.addNumericField(“Bin_Size”,Bin_Size,0);
gd0.showDialog();
if(gd0.wascanced())返回;
Bin_number=(int)gd0.getNextNumber();
Bin_size=(int)gd0.getNextNumber();
ImageStack stack=imp.getStack();
整数[]和;
int[][]侦察=null;
//获取一个切片的像素
字节[]像素;
int-dimension=ip.getWidth()*ip.getHeight()*Bin\u编号;
总和=新整数[维度];
int width=ip.getWidth();
int height=stack.getSize();
int l=0;
对于(int i=1;i请选择您要创建哪种图像类型的语言…BMP-1,2,4,8,16,24,31,64位…并指定语言请…抱歉,8位灰度,ImageJ工具上的Java。实际上我希望它在.tiff中,但它不起作用,因此现在我正在以.jpg格式创建。
import ij.*;
import ij.gui.GenericDialog;
import ij.gui.NewImage;
import ij.plugin.FolderOpener;
import ij.plugin.filter.PlugInFilter;
import static ij.plugin.filter.PlugInFilter.DOES_8G;
import static ij.plugin.filter.PlugInFilter.STACK_REQUIRED;
import ij.process.*;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
* Calculates the average values of pixels located at the same
* position in each slice of the stack and adds a slice showing the average values to the end of the stack.
public class Recon_2d implements PlugInFilter {
protected ImagePlus imp;
int Bin_number, Bin_size;
int[] average ;
public int setup(String arg, ImagePlus imp) {
this.imp = imp;
return DOES_8G+STACK_REQUIRED;
}
public void run(ImageProcessor ip) {
GenericDialog gd0 = new GenericDialog("Parameters");
gd0.addNumericField("Bin_Number", Bin_number,0);
gd0.addNumericField("Bin_Size", Bin_size,0);
gd0.showDialog();
if (gd0.wasCanceled()) return ;
Bin_number = (int)gd0.getNextNumber();
Bin_size = (int)gd0.getNextNumber();
ImageStack stack = imp.getStack();
int[] sum;
int[] [] recon = null;
// takes pixels of one slice
byte[] pixels;
int dimension = ip.getWidth()*ip.getHeight()*Bin_number;
sum = new int[dimension];
int width=ip.getWidth();
int height=stack.getSize();
int l=0;
for (int i=1;i<=stack.getSize();i++) {
pixels = (byte[]) stack.getPixels(i);
// add the value of each pixel and the corresponding position of the sum array
for (int j=0;j<stack.getWidth();j++) {
for (int k=0;k<Bin_number;k++){
for( l=0;l<Bin_size;l++){
sum[l]+=0xff & pixels[l];
}
}
}
}
average =new int[dimension];
// divide each entry by the number of pixels in each bin
for ( l=0;l<dimension;l++) {
average[l] = (byte) ((sum[l]/Bin_size) & 0xff);
}
try{
int [][] PixelArray=new int[width][height];
BufferedImage bufferImage2=new BufferedImage(width, height,BufferedImage.TYPE_BYTE_GRAY);
for(int b=0;b<Bin_number;b++){
for(int y=0;y<height;y++){
for(int x=0;x<width;x++){
int Pixel=PixelArray[x][y]<<16 | PixelArray[x][y] << 8 | PixelArray[x][y];
bufferImage2.setRGB(x, y, PixelArray[x][y]);
}
}
File outputfile = new File("D:\\Output\\new"+b+".jpg");
ImageIO.write(bufferImage2, "jpg", outputfile);
}
}
catch(Exception ee){
ee.printStackTrace();
}
}
}