Commit 89dfef44 authored by Andrey Filippov's avatar Andrey Filippov
Browse files

second expand pass, over possible background

parent 88e3bc5d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -274,10 +274,10 @@ public class DisparityProcessor {
	{
		final int dbg_tile = -1; // 28643; // x=131, y=88
		showDoubleFloatArrays sdfa_instance = null;
		if (debugLevel > -1) sdfa_instance = new showDoubleFloatArrays(); // just for debugging?
		if (debugLevel > 0) sdfa_instance = new showDoubleFloatArrays(); // just for debugging?
		final Thread[] threads = ImageDtt.newThreadArray(threadsMax);
		final int numThreads = threads.length;
		if (debugLevel > -1) System.out.println("smoothDisparity(): using "+numThreads+" threads");
		if (debugLevel > 0) System.out.println("smoothDisparity(): using "+numThreads+" threads");
		final int len = disparity.length;
		int numBorder = 0, numInternal = 0;
		for (int i = 0; i < len; i++){
@@ -428,7 +428,7 @@ public class DisparityProcessor {
				double diff = 0.0;
				for (int i = 0; (i < numThreads) && (diff <= maxDiff) ; i++) if (diff < rslt_diffs[i]) diff = rslt_diffs[i];
				if (diff <= maxDiff) {
					if (debugLevel > -1) System.out.println("smoothDisparity(): pass = "+pass+", diff = "+diff+" <= "+maxDiff);
					if (debugLevel > 0) System.out.println("smoothDisparity(): pass = "+pass+", diff = "+diff+" <= "+maxDiff);
					break;
				}
			}
+7 −0
Original line number Diff line number Diff line
@@ -339,6 +339,9 @@ public class LinkPlanes {
					true, // boolean   sum_weights,
					plPreferDisparity, 
					debugLevel - 2); // int       debugLevel)
			if (merged_pd == null){
				return false;
			}
//			merged_ev = merged_pd.getValue();
			merged_ev = merged_pd.getNormValue();
			merged_wev = merged_pd.getWValue();
@@ -352,6 +355,10 @@ public class LinkPlanes {
					true,        // boolean   sum_weights,
					plPreferDisparity, 
					debugLevel - 2); // int       debugLevel)
			if (merged_pd_eq == null){
				return false;
			}

//			merged_ev_eq = merged_pd_eq.getValue();
			merged_ev_eq = merged_pd_eq.getNormValue();
			merged_wev_eq = merged_pd_eq.getWValue();
+11 −4
Original line number Diff line number Diff line
@@ -5702,7 +5702,7 @@ public class QuadCLT {
			  final boolean    updateStatus,
			  final int        debugLevel)
	  {
		  final int max_expand =  100; // 30;
		  final int max_expand =  300; // 150; // 30;
		  // Temporary assign here
		  final int        disp_index =      ImageDtt.DISPARITY_INDEX_CM;
		  final int        str_index =       ImageDtt.DISPARITY_STRENGTH_INDEX;
@@ -5901,6 +5901,7 @@ public class QuadCLT {
    				  image_data, // first index - number of image in a quad
    				  clt_parameters,
    				  refine_pass,
    				  true, // final boolean     save_textures,
    				  threadsMax,  // maximal number of threads to launch                         
    				  updateStatus,
    				  debugLevel); 
@@ -5946,6 +5947,7 @@ public class QuadCLT {
// process once more to try combining of processed
          boolean last_pass = false;
//          for (int num_expand = 0; (num_expand < 4) && (num_extended != 0); num_expand++) {
          boolean over_infinity = false;
          for (int num_expand = 0; num_expand < max_expand; num_expand++) {
        	  
      		Runtime runtime = Runtime.getRuntime();
@@ -6078,7 +6080,7 @@ public class QuadCLT {
        	  num_extended = tp.setupExtendDisparity(
        			  extended_pass,                              // final CLTPass3d   scan,            // combined scan with max_tried_disparity, will be modified to re-scan
        			  tp.clt_3d_passes.get(refine_pass), // final CLTPass3d   last_scan,       // last prepared tile - can use last_scan.disparity, .border_tiles and .selected
        			  tp.clt_3d_passes.get(bg_pass), // final CLTPass3d   bg_scan,         // background scan data
        			  over_infinity? null: tp.clt_3d_passes.get(bg_pass), // final CLTPass3d   bg_scan,         // background scan data
        			  clt_parameters.grow_sweep,      // 8; // Try these number of tiles around known ones 
        			  clt_parameters.grow_disp_max,   //  =   50.0; // Maximal disparity to try
        			  0.5 * clt_parameters.grow_disp_trust, //  =  4.0; // Trust measured disparity within +/- this value 
@@ -6127,6 +6129,7 @@ public class QuadCLT {
        			  image_data, // first index - number of image in a quad
        			  clt_parameters,
        			  refine_pass,
    				  false, // final boolean     save_textures,
        			  threadsMax,  // maximal number of threads to launch                         
        			  updateStatus,
        			  debugLevel);
@@ -6177,7 +6180,8 @@ public class QuadCLT {
        	  if (last_pass) {
        		  break;
        	  } else if (numLeftRemoved[0] == 0){
        		  last_pass = true;
        		  if (over_infinity)  last_pass = true;
        		  else over_infinity = true;
        	  }

          }
@@ -6241,6 +6245,7 @@ public class QuadCLT {
        			  image_data, // first index - number of image in a quad
        			  clt_parameters,
        			  scanIndex,
    				  true, // final boolean     save_textures,
        			  threadsMax,  // maximal number of threads to launch                         
        			  updateStatus,
        			  debugLevel);
@@ -6404,6 +6409,7 @@ public class QuadCLT {
					  image_data, // first index - number of image in a quad
					  clt_parameters,
					  scanIndex,
    				  true, // final boolean     save_textures,
					  threadsMax,  // maximal number of threads to launch                         
					  updateStatus,
					  debugLevel);
@@ -7077,6 +7083,7 @@ public class QuadCLT {
			  final double [][][]       image_data, // first index - number of image in a quad
			  EyesisCorrectionParameters.CLTParameters           clt_parameters,
			  final int         scanIndex,
			  final boolean     save_textures,
			  final int         threadsMax,  // maximal number of threads to launch                         
			  final boolean     updateStatus,
			  final int         debugLevel)
@@ -7107,7 +7114,7 @@ public class QuadCLT {
				  {clt_parameters.fine_corr_x_2,clt_parameters.fine_corr_y_2},
				  {clt_parameters.fine_corr_x_3,clt_parameters.fine_corr_y_3}};
		  
		  double [][][][] texture_tiles =     new double [tilesY][tilesX][][]; // ["RGBA".length()][];
		  double [][][][] texture_tiles =   save_textures ? new double [tilesY][tilesX][][] : null; // ["RGBA".length()][];
		  ImageDtt image_dtt = new ImageDtt();
		  image_dtt.clt_aberrations_quad_corr(
				  tile_op,                      // per-tile operation bit codes
+4 −0
Original line number Diff line number Diff line
@@ -2315,6 +2315,10 @@ public class SuperTiles{
										dl-2); // int       debugLevel)
								// combine tile selection - if next time pd0.reDiscriminateTiles() will fail, it will
								// use old selections, we need to provide them (otherwise will use selection from the first plane)
								if (plane1 == null){
									System.out.println("refineDiscriminateTiles() nsTile="+nsTile+" plane1 = null");
									break;
								}
								plane1.orMeasSelection(these_planes[merge_planes[1]].getMeasSelection());
								
								// separately merge corresponding nonexclusiveStar and nonexclusiveStarEq of these planes - kit is not exact,
+8 −6
Original line number Diff line number Diff line
@@ -1071,7 +1071,7 @@ public class TileProcessor {
	public int setupExtendDisparity( // returns number of new tiles to try
			final CLTPass3d   scan,            // combined scan with max_tried_disparity, will be modified to re-scan
			final CLTPass3d   last_scan,       // last prepared tile - can use last_scan.disparity, .border_tiles and .selected
			final CLTPass3d   bg_scan,         // background scan data
			final CLTPass3d   bg_scan,         // background scan data, null - ignore background 
			final int         grow_sweep,      // 8; // Try these number of tiles around known ones 
			final double      grow_disp_max,   //  =   50.0; // Maximal disparity to try
			final double      tried_margin,    //  =  4.0; // consider already tried if within this margin from already tried 
@@ -1089,7 +1089,7 @@ public class TileProcessor {
			final boolean     updateStatus,
			final int         debugLevel)
	{
		final int dbg_tile = 39379; // 54627; // ty=159, tx = 249
		final int dbg_tile = -1; // 39379; // 54627; // ty=159, tx = 249
		final int tlen = tilesY * tilesX;
		final boolean retryTwoSteps = true; // false; //  true;
		
@@ -1109,9 +1109,11 @@ public class TileProcessor {
		
		boolean [] known_tiles = these_no_border.clone();
		// known are background or these tiles
		if (bg_scan != null) {
			for (int i = 0; i < known_tiles.length; i++) {
				known_tiles[i] |= bg_scan.selected[i];
			}
		}
		// set combo disparity from  last prepared
		for (int nt = 0; nt < known_tiles.length; nt++){
			int ty = nt / tilesX;
@@ -1136,7 +1138,7 @@ public class TileProcessor {
						debugLevel);    // final int     debugLevel)
				
			}
			if (!grow_retry_inf){
			if (!grow_retry_inf && (bg_scan == null)){
				for (int i = 0; i < untested_bgnd.length; i++) if (bg_scan.selected[i]) untested_bgnd[i] = false;
			}
			// turn these tiles as if they are not known (really known or belong to bgnd)
@@ -1333,7 +1335,7 @@ public class TileProcessor {
				dbg_img[0][i] = scan.max_tried_disparity[ty][tx];
				dbg_img[2][i] = scan.disparity[ty][tx];
				dbg_img[3][i] = strength[i];
				dbg_img[4][i] = ((bg_scan.selected != null) &&    (bg_scan.selected[i]))? boolean_val:0.0 ;
				if (bg_scan != null) dbg_img[4][i] = ((bg_scan.selected != null) &&    (bg_scan.selected[i]))? boolean_val:0.0 ;
				dbg_img[5][i] = ((last_scan.selected != null) &&  (last_scan.selected[i]))? boolean_val:0.0 ;
				dbg_img[6][i] = 0.05 * (dbg_img[4][i] + dbg_img[5][i]);
				dbg_img[7][i] = (scan.selected[i]?4:0)+ (scan.border_tiles[i]?8:0);