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

testing planes

parent 5467504f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -143,10 +143,15 @@ public class CLTPass3d{
			superTiles =     null;
			
		}

		public boolean [] getSelected(){
			return selected;
		}
		
		public void setSelected (boolean [] selected) {
			this.selected = selected;
		}

		public void fixNaNDisparity()
		{
			fixNaNDisparity(
+54 −38
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ public class DisparityProcessor {
			0b11111111,    // middle
			0b11110001,    // middle right
			0b00000111,    // bottom left
			0b11000111,    // mottom middle
			0b11000111,    // bottom middle
			0b11000001};   // bottom right

	TileProcessor tp;
@@ -48,12 +48,26 @@ public class DisparityProcessor {
		this.scale_dz_dx = scale_dz_dx;
	}

	public int [] getNeighbors( // creates neighbors mask from bitmask
			int [] surf_indices,
			int    indx,
			int tilesX)
	{
		boolean [] selected = new boolean [surf_indices.length];
		for (int i = 0; i < surf_indices.length; i++){
			selected[i] = surf_indices[i] == indx;
		}
		return getNeighbors(selected, tilesX);
	}
	
	
	public int [] getNeighbors( // creates neighbors mask from bitmask
			boolean [] selected,
			int tilesX
			)
	{
		int [] neibs = new int [selected.length];
		int tilesY = selected.length/tilesX;
		final int [] dirs8 = {-tilesX,  -tilesX + 1, 1, tilesX +1, tilesX, tilesX - 1, -1, -tilesX - 1};

		for (int nTile = 0; nTile < selected.length; nTile++) {
@@ -68,7 +82,7 @@ public class DisparityProcessor {
				} else {
					tileType = 1;  
				}
			} else if (tileX == (tilesX - 1)) {
			} else if (tileY == (tilesY - 1)) {
				if (tileX == 0){
					tileType = 6;  
				} else if (tileX == (tilesX - 1)) {
@@ -93,11 +107,10 @@ public class DisparityProcessor {
				}
			}
			else {
				neibs[nTile] = 0;
				neibs[nTile] = 0; // change to  -1?
			}
		}
		return neibs;

	}

	public double [] dbgShowNeighbors(
@@ -114,7 +127,8 @@ public class DisparityProcessor {
		int height = tilesY * tile_size;
		double [] rslt = new double [width*height];
		for (int i = 0; i < rslt.length; i++) rslt[i] = bgnd;
		for (int nTile = 0; nTile < neighbors.length; nTile++)if (selected[nTile]) { //  if (neighbors[nTile] != 0) {
		for (int nTile = 0; nTile < neighbors.length; nTile++) {
			if ((neighbors [nTile] >=0) && ((selected == null) || selected[nTile])) { //  if (neighbors[nTile] != 0) {
				int tileY = nTile / tilesX;
				int tileX = nTile % tilesX;
				for (int i = -1; i<= 1; i++){
@@ -130,6 +144,7 @@ public class DisparityProcessor {
					}
				}
			}
		}
		return rslt;
	}

@@ -267,7 +282,7 @@ public class DisparityProcessor {
		int numBorder = 0, numInternal = 0;
		for (int i = 0; i < len; i++){
			if ((border != null) && border[i]) numBorder++;
			else if (selected[i])              numInternal++; // only if not border
			else if (selected[i]  && (neighbors[i] >= 0)) numInternal++; // only if not border
		}
		final int numTiles = (((mask & 1) != 0)? numInternal : 0) + (((mask & 2) != 0)? numBorder : 0); 
		final int [] indices =   new int [numBorder + numInternal]; // internal excludes border
@@ -275,7 +290,7 @@ public class DisparityProcessor {
		for (int i = 0; i < len; i++){
			if ((border != null) && border[i]){
				if ((mask & 2) != 0) indices[indx++] = i;
			} else if (selected[i]) {
			} else if (selected[i]  && (neighbors[i] >= 0)) {
				if ((mask & 1) != 0) indices[indx++] = i;
			}
		}
@@ -329,7 +344,7 @@ public class DisparityProcessor {
							if ((debugLevel > 0) &&(nTile == dbg_tile)) {
								System.out.println("smoothDisparity() nTile = "+nTile+" tileX="+tileX+" tileY="+tileY);
							}
							for (int i = 0; i < dirs8.length; i++) if ((neighbors[nTile] & (1 << i)) !=0) {
							for (int i = 0; i < dirs8.length; i++) if ((neighbors[nTile] >= 0) && ((neighbors[nTile] & (1 << i)) != 0)) {
								double w = rigid8[i]; // no strength here  strength[nTile + dirs8[i]]
								int dbg_dirs8 = nTile + dirs8[i];
								double dbg_d = disp_data[0][nTile + dirs8[i]];
@@ -475,12 +490,12 @@ public class DisparityProcessor {
		final int len = disparity.length;
		int numTiles = 0;
		for (int i = 0; i < len; i++){
			if (selected[i]) numTiles++; // only if not border
			if (selected[i] && (neighbors[i] >= 0)) numTiles++; // only if not border
		}
		final int [] indices =   new int [numTiles]; // internal excludes border
		int indx = 0;
		for (int i = 0; i < len; i++){
			if (selected[i]) {
			if (selected[i] && (neighbors[i] >= 0)) {
				indices[indx++] = i;
			}
		}
@@ -488,9 +503,6 @@ public class DisparityProcessor {
		final int tilesX = tp.getTilesX();
		final int tilesY = tp.getTilesY();
		final double [][] deriv3HV = new double [2][len]; // 4-th derivative [0] - horizontal, 1 - vertical 
		// neighbors
//		final int    [][] neib_data =    {neighbors, new int [len]};
//		final double [] k4_3 =  { 1.0, -3.0,  3.0, -1.0}; // 3-rd
		final double [] k4_3 =  {-1.0,  3.0, -3.0,  1.0}; // 3-rd
		final double [] k4_2 =  {-1.0,  1.0, 1.0, -1.0};  // - 2-nd (average for 2 sides)
		final double [] k4 = (mode == 2)? k4_2 : k4_3;
@@ -504,6 +516,7 @@ public class DisparityProcessor {
//						int tileX = nTile - (tileY * tilesX);
//						double deriv4;
						int neib = neighbors[nTile];
						if (neib < 0) neib = 0; // should not get here 
						// try break horizontally (always - to the right)
						int b = (1 << 2); // "E" (right)
						int rb = (1 << 6); // "W" (left)
@@ -518,7 +531,7 @@ public class DisparityProcessor {
							if ((neib & rb) != 0) deriv += k4[0]*disparity[nTile - 1];
							else if (extend_flat) deriv += k4[0]*disparity[nTile];
							else break hor_label;
							if ((neighbors[nTile + 1] & b) != 0) deriv += k4[3]* disparity[nTile + 2];
							if ((neighbors[nTile + 1] >=0) && ((neighbors[nTile + 1] & b) != 0)) deriv += k4[3]* disparity[nTile + 2];
							else if (extend_flat)                                                deriv += k4[3]* disparity[nTile + 1];
							else break hor_label;
							switch (mode){
@@ -547,7 +560,7 @@ public class DisparityProcessor {
							if ((neib & rb) != 0) deriv += k4[0]*disparity[nTile - tilesX];
							else if (extend_flat) deriv += k4[0]*disparity[nTile];
							else break vert_label;
							if ((neighbors[nTile + tilesX] & b) != 0) deriv += k4[3]*disparity[nTile + 2 * tilesX];
							if ((neighbors[nTile +  + tilesX] >=0) && ((neighbors[nTile + tilesX] & b) != 0)) deriv += k4[3] * disparity[nTile + 2 * tilesX];
							else if (extend_flat)                                                             deriv += k4[3] * disparity[nTile + tilesX];
							else break vert_label;
							switch (mode){
@@ -624,6 +637,7 @@ public class DisparityProcessor {
								int tileY = nTile/tilesX; 
								int tileX = nTile - (tileY * tilesX);
								int neib = neighbors_in[nTile];
								if (neib < 0) neib = 0;
								if (Math.abs(deriv3HV[0][nTile]) >= break3) neib &= ~0b00001110; // break all right side
								if (Math.abs(deriv3HV[1][nTile]) >= break3) neib &= ~0b00111000; // break all down  side
								if ((tileX > 0) && selected[nTile - 1] &&      (Math.abs(deriv3HV[0][nTile - 1]) >= break3))      neib &= ~0b11100000; // break all left side
@@ -655,6 +669,7 @@ public class DisparityProcessor {
								int tileY = nTile/tilesX; 
								int tileX = nTile - (tileY * tilesX);
								int neib = neighbors_in[nTile];
								if (neib < 0) neib = 0;
								if (deriv3HV[0][nTile] >= break3) neib &= ~0b00001110; // break all right side
								if (deriv3HV[1][nTile] >= break3) neib &= ~0b00111000; // break all down  side
								if ((tileX > 0) && selected[nTile - 1] &&      (deriv3HV[0][nTile - 1] >= break3))      neib &= ~0b11100000; // break all left side
@@ -709,12 +724,12 @@ public class DisparityProcessor {
		final int len = disparity.length;
		int numTiles = 0;
		for (int i = 0; i < len; i++){
			if (selected[i]) numTiles++; // only if not border
			if (selected[i] && (neighbors[i] >= 0)) numTiles++; // only if not border
		}
		final int [] indices =   new int [numTiles]; // internal excludes border
		int indx = 0;
		for (int i = 0; i < len; i++){
			if (selected[i]) {
			if (selected[i] && (neighbors[i] >= 0)) {
				indices[indx++] = i;
			}
		}
@@ -730,7 +745,7 @@ public class DisparityProcessor {
						int tileY = nTile/tilesX; 
						int tileX = nTile - (tileY * tilesX);
						int neib = neighbors[nTile]; 

						if (neib < 0) neib = 0;
						int b = (1 << 2); // "E" (right)
						if (((neib & b) == 0) && (tileX < (tilesX - 1) && selected[nTile + 1])) {
							if (Math.abs(disparity[nTile] - disparity[nTile + 1]) < maxDiffOrto){
@@ -806,12 +821,12 @@ public class DisparityProcessor {
		final int len = neighbors.length;
		int numTiles = 0;
		for (int i = 0; i < len; i++){
			if (selected[i]) numTiles++; // only if not border
			if (selected[i] && (neighbors[i] >= 0)) numTiles++; // only if not border
		}
		final int [] indices =   new int [numTiles]; // internal excludes border
		int indx = 0;
		for (int i = 0; i < len; i++){
			if (selected[i]) {
			if (selected[i] && (neighbors[i] >= 0)) {
				indices[indx++] = i;
			}
		}
@@ -823,7 +838,7 @@ public class DisparityProcessor {
					for (int iTile = ai.getAndIncrement(); iTile < indices.length; iTile = ai.getAndIncrement()) {
						int nTile = indices[iTile];
						int neib = neighbors[nTile];
						
						if (neib < 0) neib = 0;
						if (
								((neib & (1 << 0)) != 0) &&
								((neighbors[nTile - tilesX] & (1 << 2)) != 0)){
@@ -943,6 +958,7 @@ public class DisparityProcessor {
		for (int ty = 0; ty < tilesY; ty++){
			for (int tx = 0; tx < tilesX; tx++){
				int neib = neighbors[ty * tilesX + tx];
				if (neib < 0) neib = 0;
				int []cell = field[ty + 1][tx + 1];
				if ( neib!= 0) {
					cell[0] = ((neib & NEIB_RIGHT) == 0)? FLD_EMPTY:FLD_CONN;
@@ -1070,7 +1086,7 @@ public class DisparityProcessor {
		int numTilesAll = 0;
//		final boolean [] selectedAll = new boolean[len];
		for (int i = 0; i < len; i++){
			if (selected[i] || border[i]) {
			if ((selected[i] && (neighbors[i] >= 0)) || border[i]) {
//				selectedAll[i] = true;
				numTilesAll++;
				if (!border[i])	numTiles++;
@@ -1081,7 +1097,7 @@ public class DisparityProcessor {
		int indx = 0;
		int indxAll = 0;
		for (int i = 0; i < len; i++){
			if (selected[i] || border[i]) {
			if ((selected[i] && (neighbors[i] >= 0)) || border[i]) {
				indicesAll[indxAll++] = i;
				if (!border[i])	indices[indx++] = i;
			}
@@ -1204,7 +1220,7 @@ public class DisparityProcessor {
	 *  For each cluster returns 3 arrays: indiced of internal cells, indices of fixed border cells (alpha = 0, disparity fixed)
	 *  and floating border cells (alpha = 0, disparity - from neighbors)
	 * @param diag_en true - 8 directions, false - only 4 orthogonal
	 * @param neighbors array of per-cell bitmaps - which neighbors curtrent cell is connected to (+1 - to N, +2 - to NE,...+128 = to NW)
	 * @param neighbors array of per-cell bitmaps - which neighbors current cell is connected to (+1 - to N, +2 - to NE,...+128 = to NW)
	 * @param selected boolean array of celected (internal) cells
	 * @param border boolean array of border cells (added for alpha)
	 * @param threadsMax maximal number of threads for multi-threaded application
+44 −10
Original line number Diff line number Diff line
@@ -2152,16 +2152,26 @@ public class EyesisCorrectionParameters {
  		public boolean    plDbgMerge           =   true; // Combine 'other' plane with current
  		public double     plWorstWorsening     =   1.0;  // Worst case worsening after merge 
  		public boolean    plMutualOnly         =   true; // keep only mutual links, remove weakest if conflict
  		public boolean    plFillSquares        =   true; // Add diagonals to full squares
  		public boolean    plCutCorners         =   true; // Add ortho to 45-degree corners
  		

  		public double     plPull               =  .1;   // Relative weight of original (measured) plane when combing with neighbors
  		public int        plIterations         =  10;   // Maximal number of smoothing iterations for each step
  		public int        plPrecision          =  6;    // Maximal step difference (1/power of 10)
  		
  		public boolean    plFuse               =  true; // Fuse planes together (off for debug only)
  		public boolean    plKeepOrphans        =  true; // Keep unconnected supertiles
  		public double     plMinOrphan          =  2.0;  // Minimal strength unconnected supertiles to keep
  		public double     plSnapDisp           =  .2;   // Maximal (scaled by plDispNorm) disparity difference to snap to plane at any strength
  		
  		public double     plSnapDispAny        =  .2;   // Maximal (scaled by plDispNorm) disparity difference to snap to plane at any strength
  		public double     plSnapStrengthAny    =  .2;   // Maximal strength to fit any distance (if does not fit otherwise - treat as zero str4ength
  		public double     plSnapNegAny         =  .5;   // Maximal negative disparity difference from the best match
  		public double     plSnapDispMax        =  .5;   // Maximal (scaled by plDispNorm) disparity difference to snap to plane at low strength
  		public double     plSnapDispWeight     =  .5;   // Maximal disparity diff. by weight product to snap to plane
  		public int        plSnapZeroMode       =  1;    // Zero strength snap mode: 0: no special treatment, 1 - strongest, 2 - farthest
  		
  		public boolean    replaceWeakOutlayers =   true; // false; 
  		
  		
  		// other debug images
@@ -2407,16 +2417,22 @@ public class EyesisCorrectionParameters {
			properties.setProperty(prefix+"plWorstWorsening", this.plWorstWorsening +"");
			properties.setProperty(prefix+"plMutualOnly",     this.plMutualOnly+"");

			properties.setProperty(prefix+"plFillSquares",    this.plFillSquares+"");
			properties.setProperty(prefix+"plCutCorners",     this.plCutCorners+"");

			properties.setProperty(prefix+"plPull",           this.plPull +"");
  			properties.setProperty(prefix+"plIterations",     this.plIterations+"");
  			properties.setProperty(prefix+"plPrecision",      this.plPrecision+"");
			properties.setProperty(prefix+"plFuse",           this.plFuse+"");

			properties.setProperty(prefix+"plKeepOrphans",    this.plKeepOrphans+"");
			properties.setProperty(prefix+"plMinOrphan",      this.plMinOrphan +"");
			properties.setProperty(prefix+"plSnapDisp",       this.plSnapDisp +"");
			
			properties.setProperty(prefix+"plSnapDispAny",    this.plSnapDispAny +"");
			properties.setProperty(prefix+"plSnapStrengthAny",this.plSnapStrengthAny +"");
			properties.setProperty(prefix+"plSnapNegAny",     this.plSnapNegAny +"");
			properties.setProperty(prefix+"plSnapDispMax",    this.plSnapDispMax +"");
			properties.setProperty(prefix+"plSnapDispWeight", this.plSnapDispWeight +"");
  			properties.setProperty(prefix+"plSnapZeroMode",   this.plSnapZeroMode+"");
			
			properties.setProperty(prefix+"show_ortho_combine",     this.show_ortho_combine+"");
			properties.setProperty(prefix+"show_refine_supertiles", this.show_refine_supertiles+"");
@@ -2652,16 +2668,22 @@ public class EyesisCorrectionParameters {
  			if (properties.getProperty(prefix+"plWorstWorsening")!=null)  this.plWorstWorsening=Double.parseDouble(properties.getProperty(prefix+"plWorstWorsening"));
  			if (properties.getProperty(prefix+"plMutualOnly")!=null)      this.plMutualOnly=Boolean.parseBoolean(properties.getProperty(prefix+"plMutualOnly"));

  			if (properties.getProperty(prefix+"plFillSquares")!=null)     this.plFillSquares=Boolean.parseBoolean(properties.getProperty(prefix+"plFillSquares"));
  			if (properties.getProperty(prefix+"plCutCorners")!=null)      this.plCutCorners=Boolean.parseBoolean(properties.getProperty(prefix+"plCutCorners"));

  			if (properties.getProperty(prefix+"plPull")!=null)            this.plPull=Double.parseDouble(properties.getProperty(prefix+"plPull"));
  			if (properties.getProperty(prefix+"plIterations")!=null)      this.plIterations=Integer.parseInt(properties.getProperty(prefix+"plIterations"));
  			if (properties.getProperty(prefix+"plPrecision")!=null)       this.plPrecision=Integer.parseInt(properties.getProperty(prefix+"plPrecision"));
  			if (properties.getProperty(prefix+"plFuse")!=null)            this.plFuse=Boolean.parseBoolean(properties.getProperty(prefix+"plFuse"));

  			if (properties.getProperty(prefix+"plKeepOrphans")!=null)     this.plKeepOrphans=Boolean.parseBoolean(properties.getProperty(prefix+"plKeepOrphans"));
  			if (properties.getProperty(prefix+"plMinOrphan")!=null)       this.plMinOrphan=Double.parseDouble(properties.getProperty(prefix+"plMinOrphan"));
  			if (properties.getProperty(prefix+"plSnapDisp")!=null)        this.plSnapDisp=Double.parseDouble(properties.getProperty(prefix+"plSnapDisp"));

  			if (properties.getProperty(prefix+"plSnapDispAny")!=null)     this.plSnapDispAny=Double.parseDouble(properties.getProperty(prefix+"plSnapDispAny"));
  			if (properties.getProperty(prefix+"plSnapStrengthAny")!=null) this.plSnapStrengthAny=Double.parseDouble(properties.getProperty(prefix+"plSnapStrengthAny"));
  			if (properties.getProperty(prefix+"plSnapNegAny")!=null)      this.plSnapNegAny=Double.parseDouble(properties.getProperty(prefix+"plSnapNegAny"));
  			if (properties.getProperty(prefix+"plSnapDispMax")!=null)     this.plSnapDispMax=Double.parseDouble(properties.getProperty(prefix+"plSnapDispMax"));
  			if (properties.getProperty(prefix+"plSnapDispWeight")!=null)  this.plSnapDispWeight=Double.parseDouble(properties.getProperty(prefix+"plSnapDispWeight"));
  			if (properties.getProperty(prefix+"plSnapZeroMode")!=null)       this.plPrecision=Integer.parseInt(properties.getProperty(prefix+"plSnapZeroMode"));

  			if (properties.getProperty(prefix+"show_ortho_combine")!=null)     this.show_ortho_combine=Boolean.parseBoolean(properties.getProperty(prefix+"show_ortho_combine"));
  			if (properties.getProperty(prefix+"show_refine_supertiles")!=null) this.show_refine_supertiles=Boolean.parseBoolean(properties.getProperty(prefix+"show_refine_supertiles"));
@@ -2919,6 +2941,9 @@ public class EyesisCorrectionParameters {
  			gd.addNumericField("Worst case worsening after merge",                                             this.plWorstWorsening,  6);
  			gd.addCheckbox    ("Keep only mutual links, remove weakest if conflict",                           this.plMutualOnly);

  			gd.addCheckbox    ("Add diagonals to full squares",                                                this.plFillSquares);
  			gd.addCheckbox    ("Add ortho to 45-degree corners",                                               this.plCutCorners);

  			gd.addNumericField("Relative weight of original (measured) plane when combing with neighbors",     this.plPull,  6);
  			gd.addNumericField("Maximal number of smoothing iterations for each step",                         this.plIterations,  0);
  			gd.addNumericField("Maximal step difference (1/power of 10)",                                      this.plPrecision,  0);
@@ -2927,9 +2952,12 @@ public class EyesisCorrectionParameters {
  			gd.addNumericField("Minimal strength unconnected supertiles to keep",                              this.plMinOrphan,  6);

  			gd.addMessage     ("--- Snap to planes ---");
  			gd.addNumericField("Maximal (scaled by plDispNorm) disparity difference to snap to plane at any strength",     this.plSnapDisp,  6);
  			gd.addNumericField("Maximal (scaled by plDispNorm) disparity difference to snap to plane at any strength",     this.plSnapDispAny,  6);
  			gd.addNumericField("Maximal strength to fit any distance (if does not fit otherwise - treat as zero strength", this.plSnapStrengthAny,  6);
  			gd.addNumericField("Maximal negative disparity difference from the best match",                    this.plSnapNegAny,  6);
  			gd.addNumericField("Maximal (scaled by plDispNorm) disparity difference to snap to plane at low strength",     this.plSnapDispMax,  6);
  			gd.addNumericField("Maximal disparity diff. by weight product to snap to plane",                   this.plSnapDispWeight,  6);
  			gd.addNumericField("Zero strength snap mode: 0: no special treatment, 1 - strongest, 2 - farthest",this.plSnapZeroMode,  0);
  			
  			gd.addMessage     ("--- Other debug images ---");
  			gd.addCheckbox    ("Show 'ortho_combine'",                                                         this.show_ortho_combine);
@@ -3174,16 +3202,22 @@ public class EyesisCorrectionParameters {
  			this.plWorstWorsening=      gd.getNextNumber();
  			this.plMutualOnly=          gd.getNextBoolean();

  			this.plFillSquares=         gd.getNextBoolean();
  			this.plCutCorners=          gd.getNextBoolean();

  			this.plPull=                gd.getNextNumber();
  			this.plIterations=    (int) gd.getNextNumber();
  			this.plPrecision=     (int) gd.getNextNumber();
  			this.plFuse=                gd.getNextBoolean();

  			this.plKeepOrphans=         gd.getNextBoolean();
  			this.plMinOrphan=           gd.getNextNumber();
  			this.plSnapDisp=            gd.getNextNumber();

  			this.plSnapDispAny=         gd.getNextNumber();
  			this.plSnapStrengthAny=     gd.getNextNumber();
  			this.plSnapNegAny=          gd.getNextNumber();
  			this.plSnapDispMax=         gd.getNextNumber();
  			this.plSnapDispWeight=      gd.getNextNumber();
  			this.plSnapZeroMode=  (int) gd.getNextNumber();

  			this.show_ortho_combine=    gd.getNextBoolean();
  			this.show_refine_supertiles=gd.getNextBoolean();
+80 −2
Original line number Diff line number Diff line
@@ -507,6 +507,7 @@ private Panel panel1,
			addButton("CLT reset 3D",              panelClt1, color_stop);
			addButton("CLT 3D",                    panelClt1, color_conf_process);
			addButton("CLT planes",                panelClt1, color_conf_process);
			addButton("CLT OUT 3D",                panelClt1, color_process);
						
			add(panelClt1);
		}
@@ -4756,6 +4757,9 @@ private Panel panel1,
        		UPDATE_STATUS, //final boolean    updateStatus,
        		DEBUG_LEVEL); //final int        debugLevel);
        

        
        
        if (configPath!=null) {
        	saveTimestampedProperties( // save config again
        			configPath,      // full path or null
@@ -4772,14 +4776,88 @@ private Panel panel1,
       		System.out.println("QUAD_CLT is null, nothing to show");
       		return;
        }
         
//"CLT planes"        
        QUAD_CLT.showCLTPlanes(
        		CLT_PARAMETERS,  // EyesisCorrectionParameters.DCTParameters           dct_parameters,
        		THREADS_MAX, //final int          threadsMax,  // maximal number of threads to launch                         
        		UPDATE_STATUS, //final boolean    updateStatus,
        		DEBUG_LEVEL); //final int        debugLevel);
        return;
        
    } else if (label.equals("CLT OUT 3D")) {
    	DEBUG_LEVEL=MASTER_DEBUG_LEVEL;
    	EYESIS_CORRECTIONS.setDebug(DEBUG_LEVEL);
        if (QUAD_CLT == null){
       		System.out.println("QUAD_CLT is null, nothing to show (will add previous steps)");
       		return;
        }

        
    	String configPath=null;
    	if (EYESIS_CORRECTIONS.correctionsParameters.saveSettings) {
    		configPath=EYESIS_CORRECTIONS.correctionsParameters.selectResultsDirectory(
    				true,
    				true);
    		if (configPath==null){
    			String msg="No results directory selected, command aborted";
    			System.out.println("Warning: "+msg);
    			IJ.showMessage("Warning",msg);
    			return;
    		}
    		configPath+=Prefs.getFileSeparator()+"autoconfig";
    		try {
    			saveTimestampedProperties(
    					configPath,      // full path or null
    					null, // use as default directory if path==null 
    					true,
    					PROPERTIES);

    		} catch (Exception e){
    			String msg="Failed to save configuration to "+configPath+", command aborted";
    			System.out.println("Error: "+msg);
    			IJ.showMessage("Error",msg);
    			return;
    		}
    	}      
/*
	  public boolean output3d(
			  EyesisCorrectionParameters.CLTParameters           clt_parameters,
			  EyesisCorrectionParameters.ColorProcParameters colorProcParameters,
			  EyesisCorrectionParameters.RGBParameters             rgbParameters,
			  final int        threadsMax,  // maximal number of threads to launch                         
			  final boolean    updateStatus,
			  final int        debugLevel)

 */
        boolean OK = QUAD_CLT.output3d(
        		CLT_PARAMETERS,  // EyesisCorrectionParameters.DCTParameters           dct_parameters,
        		COLOR_PROC_PARAMETERS, //EyesisCorrectionParameters.ColorProcParameters colorProcParameters,
        		RGB_PARAMETERS, //EyesisCorrectionParameters.RGBParameters             rgbParameters,
        		THREADS_MAX, //final int          threadsMax,  // maximal number of threads to launch                         
        		UPDATE_STATUS, //final boolean    updateStatus,
        		DEBUG_LEVEL); //final int        debugLevel);
        if (!OK) {
        	String msg="Image data not initialized, run 'CLT 3D' command first";
        	System.out.println("Error: "+msg);
        	IJ.showMessage("Error",msg);
        }
        
/*        
        if (configPath!=null) {
        	saveTimestampedProperties( // save config again
        			configPath,      // full path or null
        			null, // use as default directory if path==null 
        			true,
        			PROPERTIES);
        }
        
*/
        
        return;
        
        
        
        
        
//        
// End of buttons code    	
    }
Loading