Commit be7873b5 authored by Andrey Filippov's avatar Andrey Filippov
Browse files

experimenting with different modes

parent c9ed0a3d
Loading
Loading
Loading
Loading
+95 −0
Original line number Diff line number Diff line
@@ -91,6 +91,8 @@ import ij.process.ImageProcessor;
      return;
    } else showArrays(pixels, width, height, title);
  }
  
  
  public static void showArrays(double[][] pixels, int width, int height,  boolean asStack, String title, String [] titles) {
	    int i,j;
	    if (pixels==null) {
@@ -118,6 +120,99 @@ import ij.process.ImageProcessor;
	      return;
	    } else showArrays(pixels, width, height, titles);
	  }
  
  public static ImagePlus showArraysHyperstack(double[][] pixels, int width, int height,  int slices, String title, String [] titles, boolean show) {
	    int i,j;
	    if (pixels==null) {
	    	System.out.println("showDoubleFloatArrays.showArrays(): - pixel array is null");
	    }
	    float [] fpixels;
	    ImageStack array_stack=new ImageStack(width,height);
	    boolean not_empty = false;
	    for (i=0;i<pixels.length;i++) if (pixels[i]!=null) {
	    	not_empty = true;
	    	fpixels=new float[pixels[i].length];
	    	for (j=0;j<fpixels.length;j++) fpixels[j]=(float)pixels[i][j];
	    	if (i < titles.length) {
	    		array_stack.addSlice(titles[i], fpixels);
	    	} else {
	    		array_stack.addSlice("slice-"+i, fpixels);
	    	}
	    }
	    ImagePlus imp_stack = null;
	    if (not_empty) {
	    	imp_stack = IJ.createImage(
	    			title,                         // String title,
	    			"32-bit,grayscale-mode", // ,label", // String type,
	    			width,                         // int width,
	    			height,                        // int height,
	    			1,                             // int channels,
	    			slices,                        // int slices,
	    			pixels.length / slices);       //  frames) 
	    	imp_stack.setStack(array_stack);
	    	imp_stack.getProcessor().resetMinAndMax();
	    	if (show) {
	    		imp_stack.show();
	    	}
	    }
	    return imp_stack;
	  }

  public static ImagePlus showArraysHyperstack(
		  double[][][] pixels,
		  int          width,
		  String       title,
		  String []    titles, // all slices*frames titles or just slice titles or null
		  String []    frame_titles, // frame titles or null
		  boolean      show) {
	  int num_frames =  pixels.length;
	  int num_slices =  pixels[0].length;
	  
	  double [][] dpixels = new double [num_frames*num_slices][];
//	  System.out.println("pixels.length="+pixels.length+" pixels[0].length="+pixels[0].length);
	  for (int f = 0; f < num_frames; f++) {
//		  System.out.println("f="+f);
		  for (int s = 0; s < num_slices; s ++) {
			  int indx = s + f * num_slices;
//			  System.out.println("f="+f+" s="+s+" indx="+indx);
			  dpixels[indx] = pixels[f][s];
		  }
	  }
	  String [] combo_titles;
	  if ((titles != null) && (titles.length == dpixels.length)) {
		  combo_titles = titles;
	  } else {
		  combo_titles = new String[dpixels.length];
		  if (titles == null) {
			  titles = new String [pixels[0].length];
			  for (int i = 0; i < titles.length; i++) {
				  titles[i] = ""+i;
			  }
		  }
		  if (frame_titles == null) {
			  frame_titles = new String [pixels.length];
			  for (int i = 0; i < titles.length; i++) {
				  frame_titles[i] = ""+i;
			  }
		  }
		  for (int f = 0; f < frame_titles.length; f++) {
			  for (int s = 0; s < titles.length; s++) {
				  combo_titles[s + f * titles.length] = frame_titles[f]+":"+titles[s];
			  }
		  }
	  }
	  return  showArraysHyperstack(
			  dpixels,                   // double[][] pixels,
			  width,                     // int width,
			  pixels[0][0].length/width, // int height,
			  pixels[0].length,          // int slices,
			  title,                     // String title,
			  combo_titles,              // String [] titles);
			  show);                     // boolean show
  }
  
  
  
  public static void showComplex(double[][][] cpixels, String title) {
	  int height = cpixels.length;
	  int width =  cpixels[0].length;