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

refactoring

parent 7506079e
Loading
Loading
Loading
Loading
+74 −22
Original line number Original line Diff line number Diff line
@@ -720,10 +720,12 @@ min_str_neib_fpn 0.35
	public Color annotate_color_mono =   new Color( 255, 180,  50); // reddish over grey
	public Color annotate_color_mono =   new Color( 255, 180,  50); // reddish over grey
	public boolean annotate_transparent_mono =  false; // // black if not transparent
	public boolean annotate_transparent_mono =  false; // // black if not transparent
	
	
	// terrain parameters
	// terrain/vegetation parameters
	public boolean   terr_um_en =             true;
	public boolean   terr_um_en =             true;
	public double    terr_um_sigma =           1.0; 
	public double    terr_um_sigma =           1.0; 
	public double    terr_um_weight =          0.8;
	public double    terr_um_weight =          0.8;
	public double    terr_nan_tolerance =      0.001;  // set undefined terrain (out of capture area) to nan, it is almost zero after UM
	public int       terr_nan_grow =          20;      // grow undefined terrain after detection 


	public boolean   terr_tile_woi =          true; // if false - use woi50;
	public boolean   terr_tile_woi =          true; // if false - use woi50;
	public Rectangle terr_woi_enclos =        new Rectangle(80,  210, 210, 230); // will be tiled, using width/height from woi_step;
	public Rectangle terr_woi_enclos =        new Rectangle(80,  210, 210, 230); // will be tiled, using width/height from woi_step;
@@ -733,6 +735,10 @@ min_str_neib_fpn 0.35
	public boolean   terr_continue=           false; // start from last/single
	public boolean   terr_continue=           false; // start from last/single
	
	
	public int       terr_min_scenes =         1; // minimal number of scenes (inside woi) vegetation pixel must influence
	public int       terr_min_scenes =         1; // minimal number of scenes (inside woi) vegetation pixel must influence
	public int       terr_min_samples_scene = 10;
	public int       terr_min_total_scenes =   2;
	public int       terr_min_pixels =        10;
	
	public double    terr_alpha_dflt =         0.5;
	public double    terr_alpha_dflt =         0.5;
	public double    terr_alpha_loss =       100.0;
	public double    terr_alpha_loss =       100.0;
	public double    terr_alpha_offset =       0.0;
	public double    terr_alpha_offset =       0.0;
@@ -750,6 +756,7 @@ min_str_neib_fpn 0.35


	// LMA parameters        
	// LMA parameters        
	public double    terr_boost_parallax =     3.0;  //
	public double    terr_boost_parallax =     3.0;  //
	public double    terr_max_parallax =      10.0;  // parallax limit when evaluating boost parallax
	public double    terr_reg_weights =        0.25; // fraction of the total weight used for regularization
	public double    terr_reg_weights =        0.25; // fraction of the total weight used for regularization
	public double    terr_lambda =             5.0;  // 
	public double    terr_lambda =             5.0;  // 
	public double    terr_lambda_scale_good =  0.5;
	public double    terr_lambda_scale_good =  0.5;
@@ -765,6 +772,9 @@ min_str_neib_fpn 0.35
	public double    terr_alpha_min =          0.1;  // below - completely transparent vegetation
	public double    terr_alpha_min =          0.1;  // below - completely transparent vegetation
	public double    terr_alpha_max =          0.8;  // above - completely opaque
	public double    terr_alpha_max =          0.8;  // above - completely opaque
	public double    terr_weight_opaque =      0.02; // render through completely opaque vegetation
	public double    terr_weight_opaque =      0.02; // render through completely opaque vegetation
	public double    terr_boost_render =       3.0;  // boost parallax during render
	public double    terr_max_render =        10.0;  // maximal parallax during render
	
	public int       terr_num_exaggerate =     3;    // generate exagerrated rendering   
	public int       terr_num_exaggerate =     3;    // generate exagerrated rendering   
	
	
	// Experimental reconstruction
	// Experimental reconstruction
@@ -1944,6 +1954,8 @@ min_str_neib_fpn 0.35
		gd.addCheckbox    ("Enable UM",          terr_um_en,           "Enable unsharp mask filter.");
		gd.addCheckbox    ("Enable UM",          terr_um_en,           "Enable unsharp mask filter.");
		gd.addNumericField("UM sigma",           terr_um_sigma, 5,7,   "pix", "Unsharp mask sigma.");
		gd.addNumericField("UM sigma",           terr_um_sigma, 5,7,   "pix", "Unsharp mask sigma.");
		gd.addNumericField("UM weight",          terr_um_weight, 5,7,  "",    "Unsharp mask weight.");
		gd.addNumericField("UM weight",          terr_um_weight, 5,7,  "",    "Unsharp mask weight.");
		gd.addNumericField("NaN tolerance",      terr_nan_tolerance, 5,7,"", "Replace continuous almost zeros with NaN-s.");
		gd.addNumericField("NaN grow",           terr_nan_grow, 0,3,"pix",   "Grow \"almost\" zero areas after detection (+2 - 8 directions, +1 - only ortho).");
		
		
		gd.addMessage     ("Scan WOI parameters");
		gd.addMessage     ("Scan WOI parameters");
		gd.addCheckbox    ("Tiled WOI",          terr_tile_woi, "Process tiled WOI (False - a single one).");
		gd.addCheckbox    ("Tiled WOI",          terr_tile_woi, "Process tiled WOI (False - a single one).");
@@ -1955,6 +1967,9 @@ min_str_neib_fpn 0.35
        
        
		gd.addMessage     ("LMA losses and goals for alpha, terrain and vegetation pixels");
		gd.addMessage     ("LMA losses and goals for alpha, terrain and vegetation pixels");
		gd.addNumericField("Min influenced scenes",terr_min_scenes, 0,3,  "",   "Minimal number of scenes (inside woi) vegetation pixel must influence.");
		gd.addNumericField("Min influenced scenes",terr_min_scenes, 0,3,  "",   "Minimal number of scenes (inside woi) vegetation pixel must influence.");
		gd.addNumericField("Minimal samples/scene",terr_min_samples_scene, 0,3,"","Minimal samples per scene used for fitting (skip scene if less).");
		gd.addNumericField("Minimum scenes used",  terr_min_total_scenes, 0,3,"", "Minimal total number of scenes used (skip segment if less).");
		gd.addNumericField("Minimal pixels fitted",terr_min_pixels, 0,3,"",   "Minimal number of terrain and vegetation pixels used for fitting in this segment(skip segment if less).");
		gd.addNumericField("Defalt alpha",         terr_alpha_dflt, 5,7,"", 	"Default vegetation alpha.");
		gd.addNumericField("Defalt alpha",         terr_alpha_dflt, 5,7,"", 	"Default vegetation alpha.");
		gd.addNumericField("Alpha loss",           terr_alpha_loss, 5,7,"", 	"Alpha quadratic growing loss for when out of [0,1] range");
		gd.addNumericField("Alpha loss",           terr_alpha_loss, 5,7,"", 	"Alpha quadratic growing loss for when out of [0,1] range");
		gd.addNumericField("Alpha offset",         terr_alpha_offset, 5,7,"",   "Start alpha losses above 0.0 and below 1.0 by this value.");
		gd.addNumericField("Alpha offset",         terr_alpha_offset, 5,7,"",   "Start alpha losses above 0.0 and below 1.0 by this value.");
@@ -1972,6 +1987,7 @@ min_str_neib_fpn 0.35
	
	
		gd.addMessage     ("LMA parameters");
		gd.addMessage     ("LMA parameters");
		gd.addNumericField("Boost parallax",       terr_boost_parallax, 5,7,"",	"Increase weight of scenes that have high parallax to the reference one.");
		gd.addNumericField("Boost parallax",       terr_boost_parallax, 5,7,"",	"Increase weight of scenes that have high parallax to the reference one.");
		gd.addNumericField("Limit parallax",       terr_max_parallax, 5,7,"",	"Parallax limit when evaluating boost parallax.");
		gd.addNumericField("Losses weight",        terr_reg_weights, 5,7,"", 	"Fraction of other losses compared to the RMSE.");
		gd.addNumericField("Losses weight",        terr_reg_weights, 5,7,"", 	"Fraction of other losses compared to the RMSE.");
		gd.addNumericField("Initial lambda",       terr_lambda, 5,7,"", 		"Initial LMA lambda.");
		gd.addNumericField("Initial lambda",       terr_lambda, 5,7,"", 		"Initial LMA lambda.");
		gd.addNumericField("Lambda scale on good", terr_lambda_scale_good, 5,7,"","Scale lambda if RMSE improved.");
		gd.addNumericField("Lambda scale on good", terr_lambda_scale_good, 5,7,"","Scale lambda if RMSE improved.");
@@ -1987,6 +2003,8 @@ min_str_neib_fpn 0.35
		gd.addNumericField("Transparent alpha",    terr_alpha_min, 5,7,"", 			".");
		gd.addNumericField("Transparent alpha",    terr_alpha_min, 5,7,"", 			".");
		gd.addNumericField("Opaque alpha",         terr_alpha_max, 5,7,"", 			".");
		gd.addNumericField("Opaque alpha",         terr_alpha_max, 5,7,"", 			".");
		gd.addNumericField("Opaque weight",        terr_weight_opaque, 5,7,"", 			".");
		gd.addNumericField("Opaque weight",        terr_weight_opaque, 5,7,"", 			".");
		gd.addNumericField("Boost parallax render",terr_boost_render, 5,7,"", "Increase weight of scenes that have high parallax to the reference one (during render).");
		gd.addNumericField("Limit parallax render",terr_max_render, 5,7,"",	  "Parallax limit when evaluating boost parallax (during render).");
		gd.addNumericField("Exagerrate steps",     terr_num_exaggerate, 0,3,"", 			".");
		gd.addNumericField("Exagerrate steps",     terr_num_exaggerate, 0,3,"", 			".");


		gd.addMessage     ("Experimental");
		gd.addMessage     ("Experimental");
@@ -2616,6 +2634,9 @@ min_str_neib_fpn 0.35
		terr_um_en =               gd.getNextBoolean();// boolean
		terr_um_en =               gd.getNextBoolean();// boolean
		terr_um_sigma =            gd.getNextNumber();// double 
		terr_um_sigma =            gd.getNextNumber();// double 
		terr_um_weight =           gd.getNextNumber();// double 
		terr_um_weight =           gd.getNextNumber();// double 
		terr_nan_tolerance =       gd.getNextNumber();// double 
		terr_nan_grow =      (int) gd.getNextNumber();// int
		


		terr_tile_woi =            gd.getNextBoolean();// boolean
		terr_tile_woi =            gd.getNextBoolean();// boolean
		terr_continue =            gd.getNextBoolean();// boolean
		terr_continue =            gd.getNextBoolean();// boolean
@@ -2625,6 +2646,10 @@ min_str_neib_fpn 0.35
		terr_skip_exist =          gd.getNextBoolean();// boolean
		terr_skip_exist =          gd.getNextBoolean();// boolean


		terr_min_scenes =    (int) gd.getNextNumber();// int
		terr_min_scenes =    (int) gd.getNextNumber();// int
		terr_min_samples_scene=(int) gd.getNextNumber();// int
		terr_min_total_scenes=(int) gd.getNextNumber();// int
		terr_min_pixels =    (int) gd.getNextNumber();// int
		
		terr_alpha_dflt =          gd.getNextNumber();// double 
		terr_alpha_dflt =          gd.getNextNumber();// double 
		terr_alpha_loss =          gd.getNextNumber();// double 
		terr_alpha_loss =          gd.getNextNumber();// double 
		terr_alpha_offset =        gd.getNextNumber();// double 
		terr_alpha_offset =        gd.getNextNumber();// double 
@@ -2641,6 +2666,7 @@ min_str_neib_fpn 0.35
		terr_veget_pull0 =         gd.getNextNumber();// double 
		terr_veget_pull0 =         gd.getNextNumber();// double 


		terr_boost_parallax =      gd.getNextNumber();// double 
		terr_boost_parallax =      gd.getNextNumber();// double 
		terr_max_parallax =        gd.getNextNumber();// double 
		terr_reg_weights =         gd.getNextNumber();// double 
		terr_reg_weights =         gd.getNextNumber();// double 
		terr_lambda =              gd.getNextNumber();// double 
		terr_lambda =              gd.getNextNumber();// double 
		terr_lambda_scale_good =   gd.getNextNumber();// double 
		terr_lambda_scale_good =   gd.getNextNumber();// double 
@@ -2655,6 +2681,8 @@ min_str_neib_fpn 0.35
		terr_alpha_min =           gd.getNextNumber();// double 
		terr_alpha_min =           gd.getNextNumber();// double 
		terr_alpha_max =           gd.getNextNumber();// double 
		terr_alpha_max =           gd.getNextNumber();// double 
		terr_weight_opaque =       gd.getNextNumber();// double
		terr_weight_opaque =       gd.getNextNumber();// double
		terr_boost_render =        gd.getNextNumber();// double
		terr_max_render =          gd.getNextNumber();// double
		terr_num_exaggerate = (int)gd.getNextNumber();// int    
		terr_num_exaggerate = (int)gd.getNextNumber();// int    


		terr_threshold_terrain =   gd.getNextNumber();// double 
		terr_threshold_terrain =   gd.getNextNumber();// double 
@@ -3254,6 +3282,8 @@ min_str_neib_fpn 0.35
		properties.setProperty(prefix+"terr_um_en",                  terr_um_en+"");              // boolean
		properties.setProperty(prefix+"terr_um_en",                  terr_um_en+"");              // boolean
		properties.setProperty(prefix+"terr_um_sigma",               terr_um_sigma+"");           // double 
		properties.setProperty(prefix+"terr_um_sigma",               terr_um_sigma+"");           // double 
		properties.setProperty(prefix+"terr_um_weight",              terr_um_weight+"");          // double 
		properties.setProperty(prefix+"terr_um_weight",              terr_um_weight+"");          // double 
		properties.setProperty(prefix+"terr_nan_tolerance",          terr_nan_tolerance+"");      // double 
		properties.setProperty(prefix+"terr_nan_grow",               terr_nan_grow+"");           // int


		properties.setProperty(prefix+"terr_tile_woi",               terr_tile_woi+"");           // boolean
		properties.setProperty(prefix+"terr_tile_woi",               terr_tile_woi+"");           // boolean
		properties.setProperty(prefix+"terr_continue",               terr_continue+"");           // boolean
		properties.setProperty(prefix+"terr_continue",               terr_continue+"");           // boolean
@@ -3263,6 +3293,9 @@ min_str_neib_fpn 0.35
		properties.setProperty(prefix+"terr_skip_exist",             terr_skip_exist+"");         // boolean
		properties.setProperty(prefix+"terr_skip_exist",             terr_skip_exist+"");         // boolean


		properties.setProperty(prefix+"terr_min_scenes",             terr_min_scenes+"");         // int
		properties.setProperty(prefix+"terr_min_scenes",             terr_min_scenes+"");         // int
		properties.setProperty(prefix+"terr_min_samples_scene",      terr_min_samples_scene+"");  // int
		properties.setProperty(prefix+"terr_min_total_scenes",       terr_min_total_scenes+"");   // int
		properties.setProperty(prefix+"terr_min_pixels",             terr_min_pixels+"");         // int
		properties.setProperty(prefix+"terr_alpha_dflt",             terr_alpha_dflt+"");         // double 
		properties.setProperty(prefix+"terr_alpha_dflt",             terr_alpha_dflt+"");         // double 
		properties.setProperty(prefix+"terr_alpha_loss",             terr_alpha_loss+"");         // double 
		properties.setProperty(prefix+"terr_alpha_loss",             terr_alpha_loss+"");         // double 
		properties.setProperty(prefix+"terr_alpha_offset",           terr_alpha_offset+"");       // double 
		properties.setProperty(prefix+"terr_alpha_offset",           terr_alpha_offset+"");       // double 
@@ -3279,6 +3312,7 @@ min_str_neib_fpn 0.35
		properties.setProperty(prefix+"terr_veget_pull0",            terr_veget_pull0+"");        // double 
		properties.setProperty(prefix+"terr_veget_pull0",            terr_veget_pull0+"");        // double 


		properties.setProperty(prefix+"terr_boost_parallax",         terr_boost_parallax+"");     // double 
		properties.setProperty(prefix+"terr_boost_parallax",         terr_boost_parallax+"");     // double 
		properties.setProperty(prefix+"terr_max_parallax",           terr_max_parallax+"");       // double 
		properties.setProperty(prefix+"terr_reg_weights",            terr_reg_weights+"");        // double 
		properties.setProperty(prefix+"terr_reg_weights",            terr_reg_weights+"");        // double 
		properties.setProperty(prefix+"terr_lambda",                 terr_lambda+"");             // double 
		properties.setProperty(prefix+"terr_lambda",                 terr_lambda+"");             // double 
		properties.setProperty(prefix+"terr_lambda_scale_good",      terr_lambda_scale_good+"");  // double 
		properties.setProperty(prefix+"terr_lambda_scale_good",      terr_lambda_scale_good+"");  // double 
@@ -3293,6 +3327,8 @@ min_str_neib_fpn 0.35
		properties.setProperty(prefix+"terr_alpha_min",              terr_alpha_min+"");          // double 
		properties.setProperty(prefix+"terr_alpha_min",              terr_alpha_min+"");          // double 
		properties.setProperty(prefix+"terr_alpha_max",              terr_alpha_max+"");          // double 
		properties.setProperty(prefix+"terr_alpha_max",              terr_alpha_max+"");          // double 
		properties.setProperty(prefix+"terr_weight_opaque",          terr_weight_opaque+"");      // double 
		properties.setProperty(prefix+"terr_weight_opaque",          terr_weight_opaque+"");      // double 
		properties.setProperty(prefix+"terr_boost_render",           terr_boost_render+"");       // double 
		properties.setProperty(prefix+"terr_max_render",             terr_max_render+"");         // double 
		properties.setProperty(prefix+"terr_num_exaggerate",         terr_num_exaggerate+"");     // int    
		properties.setProperty(prefix+"terr_num_exaggerate",         terr_num_exaggerate+"");     // int    


		properties.setProperty(prefix+"terr_threshold_terrain",      terr_threshold_terrain+"");  // double 
		properties.setProperty(prefix+"terr_threshold_terrain",      terr_threshold_terrain+"");  // double 
@@ -3915,6 +3951,8 @@ min_str_neib_fpn 0.35
		if (properties.getProperty(prefix+"terr_um_en")!=              null) terr_um_en=Boolean.parseBoolean(properties.getProperty(prefix+"terr_um_en"));
		if (properties.getProperty(prefix+"terr_um_en")!=              null) terr_um_en=Boolean.parseBoolean(properties.getProperty(prefix+"terr_um_en"));
		if (properties.getProperty(prefix+"terr_um_sigma")!=           null) terr_um_sigma=Double.parseDouble(properties.getProperty(prefix+"terr_um_sigma"));
		if (properties.getProperty(prefix+"terr_um_sigma")!=           null) terr_um_sigma=Double.parseDouble(properties.getProperty(prefix+"terr_um_sigma"));
		if (properties.getProperty(prefix+"terr_um_weight")!=          null) terr_um_weight=Double.parseDouble(properties.getProperty(prefix+"terr_um_weight"));
		if (properties.getProperty(prefix+"terr_um_weight")!=          null) terr_um_weight=Double.parseDouble(properties.getProperty(prefix+"terr_um_weight"));
		if (properties.getProperty(prefix+"terr_nan_tolerance")!=      null) terr_nan_tolerance=Double.parseDouble(properties.getProperty(prefix+"terr_nan_tolerance"));
		if (properties.getProperty(prefix+"terr_nan_grow")!=           null) terr_nan_grow=Integer.parseInt(properties.getProperty(prefix+"terr_nan_grow"));
		
		
		if (properties.getProperty(prefix+"terr_tile_woi")!=           null) terr_tile_woi=Boolean.parseBoolean(properties.getProperty(prefix+"terr_tile_woi"));
		if (properties.getProperty(prefix+"terr_tile_woi")!=           null) terr_tile_woi=Boolean.parseBoolean(properties.getProperty(prefix+"terr_tile_woi"));
		if (properties.getProperty(prefix+"terr_continue")!=           null) terr_continue=Boolean.parseBoolean(properties.getProperty(prefix+"terr_continue"));
		if (properties.getProperty(prefix+"terr_continue")!=           null) terr_continue=Boolean.parseBoolean(properties.getProperty(prefix+"terr_continue"));
@@ -3924,6 +3962,9 @@ min_str_neib_fpn 0.35
		if (properties.getProperty(prefix+"terr_skip_exist")!=         null) terr_skip_exist=Boolean.parseBoolean(properties.getProperty(prefix+"terr_skip_exist"));
		if (properties.getProperty(prefix+"terr_skip_exist")!=         null) terr_skip_exist=Boolean.parseBoolean(properties.getProperty(prefix+"terr_skip_exist"));


		if (properties.getProperty(prefix+"terr_min_scenes")!=         null) terr_min_scenes=Integer.parseInt(properties.getProperty(prefix+"terr_min_scenes"));
		if (properties.getProperty(prefix+"terr_min_scenes")!=         null) terr_min_scenes=Integer.parseInt(properties.getProperty(prefix+"terr_min_scenes"));
		if (properties.getProperty(prefix+"terr_min_samples_scene")!=  null) terr_min_samples_scene=Integer.parseInt(properties.getProperty(prefix+"terr_min_samples_scene"));
		if (properties.getProperty(prefix+"terr_min_total_scenes")!=   null) terr_min_total_scenes=Integer.parseInt(properties.getProperty(prefix+"terr_min_total_scenes"));
		if (properties.getProperty(prefix+"terr_min_pixels")!=         null) terr_min_pixels=Integer.parseInt(properties.getProperty(prefix+"terr_min_pixels"));
		if (properties.getProperty(prefix+"terr_alpha_dflt")!=         null) terr_alpha_dflt=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_dflt"));
		if (properties.getProperty(prefix+"terr_alpha_dflt")!=         null) terr_alpha_dflt=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_dflt"));
		if (properties.getProperty(prefix+"terr_alpha_loss")!=         null) terr_alpha_loss=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_loss"));
		if (properties.getProperty(prefix+"terr_alpha_loss")!=         null) terr_alpha_loss=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_loss"));
		if (properties.getProperty(prefix+"terr_alpha_offset")!=       null) terr_alpha_offset=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_offset"));
		if (properties.getProperty(prefix+"terr_alpha_offset")!=       null) terr_alpha_offset=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_offset"));
@@ -3940,6 +3981,7 @@ min_str_neib_fpn 0.35
		if (properties.getProperty(prefix+"terr_veget_pull0")!=        null) terr_veget_pull0=Double.parseDouble(properties.getProperty(prefix+"terr_veget_pull0"));
		if (properties.getProperty(prefix+"terr_veget_pull0")!=        null) terr_veget_pull0=Double.parseDouble(properties.getProperty(prefix+"terr_veget_pull0"));


		if (properties.getProperty(prefix+"terr_boost_parallax")!=     null) terr_boost_parallax=Double.parseDouble(properties.getProperty(prefix+"terr_boost_parallax"));
		if (properties.getProperty(prefix+"terr_boost_parallax")!=     null) terr_boost_parallax=Double.parseDouble(properties.getProperty(prefix+"terr_boost_parallax"));
		if (properties.getProperty(prefix+"terr_max_parallax")!=       null) terr_max_parallax=Double.parseDouble(properties.getProperty(prefix+"terr_max_parallax"));
		if (properties.getProperty(prefix+"terr_reg_weights")!=        null) terr_reg_weights=Double.parseDouble(properties.getProperty(prefix+"terr_reg_weights"));
		if (properties.getProperty(prefix+"terr_reg_weights")!=        null) terr_reg_weights=Double.parseDouble(properties.getProperty(prefix+"terr_reg_weights"));
		if (properties.getProperty(prefix+"terr_lambda")!=             null) terr_lambda=Double.parseDouble(properties.getProperty(prefix+"terr_lambda"));
		if (properties.getProperty(prefix+"terr_lambda")!=             null) terr_lambda=Double.parseDouble(properties.getProperty(prefix+"terr_lambda"));
		if (properties.getProperty(prefix+"terr_lambda_scale_good")!=  null) terr_lambda_scale_good=Double.parseDouble(properties.getProperty(prefix+"terr_lambda_scale_good"));
		if (properties.getProperty(prefix+"terr_lambda_scale_good")!=  null) terr_lambda_scale_good=Double.parseDouble(properties.getProperty(prefix+"terr_lambda_scale_good"));
@@ -3954,6 +3996,8 @@ min_str_neib_fpn 0.35
		if (properties.getProperty(prefix+"terr_alpha_min")!=          null) terr_alpha_min=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_min"));
		if (properties.getProperty(prefix+"terr_alpha_min")!=          null) terr_alpha_min=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_min"));
		if (properties.getProperty(prefix+"terr_alpha_max")!=          null) terr_alpha_max=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_max"));
		if (properties.getProperty(prefix+"terr_alpha_max")!=          null) terr_alpha_max=Double.parseDouble(properties.getProperty(prefix+"terr_alpha_max"));
		if (properties.getProperty(prefix+"terr_weight_opaque")!=      null) terr_weight_opaque=Double.parseDouble(properties.getProperty(prefix+"terr_weight_opaque"));
		if (properties.getProperty(prefix+"terr_weight_opaque")!=      null) terr_weight_opaque=Double.parseDouble(properties.getProperty(prefix+"terr_weight_opaque"));
		if (properties.getProperty(prefix+"terr_boost_render")!=       null) terr_boost_render=Double.parseDouble(properties.getProperty(prefix+"terr_boost_render"));
		if (properties.getProperty(prefix+"terr_max_render")!=         null) terr_max_render=Double.parseDouble(properties.getProperty(prefix+"terr_max_render"));
		if (properties.getProperty(prefix+"terr_num_exaggerate")!=     null) terr_num_exaggerate=Integer.parseInt(properties.getProperty(prefix+"terr_num_exaggerate"));
		if (properties.getProperty(prefix+"terr_num_exaggerate")!=     null) terr_num_exaggerate=Integer.parseInt(properties.getProperty(prefix+"terr_num_exaggerate"));


		if (properties.getProperty(prefix+"terr_threshold_terrain")!=  null) terr_threshold_terrain=Double.parseDouble(properties.getProperty(prefix+"terr_threshold_terrain"));
		if (properties.getProperty(prefix+"terr_threshold_terrain")!=  null) terr_threshold_terrain=Double.parseDouble(properties.getProperty(prefix+"terr_threshold_terrain"));
@@ -4543,6 +4587,8 @@ min_str_neib_fpn 0.35
		imp.terr_um_en =                         this.terr_um_en;    
		imp.terr_um_en =                         this.terr_um_en;    
		imp.terr_um_sigma =                      this.terr_um_sigma; 
		imp.terr_um_sigma =                      this.terr_um_sigma; 
		imp.terr_um_weight =                     this.terr_um_weight;
		imp.terr_um_weight =                     this.terr_um_weight;
		imp.terr_nan_tolerance =                 this.terr_nan_tolerance;
		imp.terr_nan_grow =                      this.terr_nan_grow;


		imp.terr_tile_woi =                      this.terr_tile_woi;                           
		imp.terr_tile_woi =                      this.terr_tile_woi;                           
		imp.terr_continue =                      this.terr_continue;                           
		imp.terr_continue =                      this.terr_continue;                           
@@ -4552,6 +4598,9 @@ min_str_neib_fpn 0.35
		imp.terr_skip_exist =                    this.terr_skip_exist;                           
		imp.terr_skip_exist =                    this.terr_skip_exist;                           


		imp.terr_min_scenes =                    this.terr_min_scenes;
		imp.terr_min_scenes =                    this.terr_min_scenes;
		imp.terr_min_samples_scene =             this.terr_min_samples_scene;
		imp.terr_min_total_scenes =              this.terr_min_total_scenes;
		imp.terr_min_pixels =                    this.terr_min_pixels;
		imp.terr_alpha_dflt =                    this.terr_alpha_dflt;                           
		imp.terr_alpha_dflt =                    this.terr_alpha_dflt;                           
		imp.terr_alpha_loss =                    this.terr_alpha_loss;                           
		imp.terr_alpha_loss =                    this.terr_alpha_loss;                           
		imp.terr_alpha_offset =                  this.terr_alpha_offset;                           
		imp.terr_alpha_offset =                  this.terr_alpha_offset;                           
@@ -4568,6 +4617,7 @@ min_str_neib_fpn 0.35
		imp.terr_veget_pull0 =                   this.terr_veget_pull0;                           
		imp.terr_veget_pull0 =                   this.terr_veget_pull0;                           


		imp.terr_boost_parallax =                this.terr_boost_parallax;                           
		imp.terr_boost_parallax =                this.terr_boost_parallax;                           
		imp.terr_max_parallax =                  this.terr_max_parallax;                           
		imp.terr_reg_weights =                   this.terr_reg_weights;                           
		imp.terr_reg_weights =                   this.terr_reg_weights;                           
		imp.terr_lambda =                        this.terr_lambda;                           
		imp.terr_lambda =                        this.terr_lambda;                           
		imp.terr_lambda_scale_good =             this.terr_lambda_scale_good;                           
		imp.terr_lambda_scale_good =             this.terr_lambda_scale_good;                           
@@ -4582,6 +4632,8 @@ min_str_neib_fpn 0.35
		imp.terr_alpha_min =                     this.terr_alpha_min;                           
		imp.terr_alpha_min =                     this.terr_alpha_min;                           
		imp.terr_alpha_max =                     this.terr_alpha_max;                           
		imp.terr_alpha_max =                     this.terr_alpha_max;                           
		imp.terr_weight_opaque =                 this.terr_weight_opaque;
		imp.terr_weight_opaque =                 this.terr_weight_opaque;
		imp.terr_boost_render =                  this.terr_boost_render;
		imp.terr_max_render =                    this.terr_max_render;
		imp.terr_num_exaggerate =                this.terr_num_exaggerate;                           
		imp.terr_num_exaggerate =                this.terr_num_exaggerate;                           


		imp.terr_threshold_terrain =             this.terr_threshold_terrain;                           
		imp.terr_threshold_terrain =             this.terr_threshold_terrain;                           
+18 −8
Original line number Original line Diff line number Diff line
@@ -1512,7 +1512,7 @@ public class VegetationLMA {
		for (int n = 0; n < 4; n++) {
		for (int n = 0; n < 4; n++) {
			for (int i = 0; (i < indices[n].length) && (i < par_index[n].length); i++) {
			for (int i = 0; (i < indices[n].length) && (i < par_index[n].length); i++) {
				int indx = i;
				int indx = i;
				if (n < 3) {
				if (n < TVAO_SCENE_OFFSET) {
					int w = i % woi.width;
					int w = i % woi.width;
					int h = i / woi.width;
					int h = i / woi.width;
					indx = (h + woi.y) * full.width + (w + woi.x);
					indx = (h + woi.y) * full.width + (w + woi.x);
@@ -1520,7 +1520,11 @@ public class VegetationLMA {
				int pindx = par_index[n][indx];
				int pindx = par_index[n][indx];
				indices[n][i] =  pindx;
				indices[n][i] =  pindx;
				if (pindx < 0) {
				if (pindx < 0) {
					if (n == TVAO_SCENE_OFFSET) {
						data[n][i] = Double.NaN;
					} else {
						data[n][i] = tvao[n][indx];
						data[n][i] = tvao[n][indx];
					}
				} else {
				} else {
					data[n][i] = vector[pindx];
					data[n][i] = vector[pindx];
				}
				}
@@ -1644,9 +1648,17 @@ public class VegetationLMA {
				}
				}
			}
			}
			// Trim data to actiual
			// Trim data to actiual
			int num_pars_scenes =           Integer.parseInt((String) imp_pars.getProperty("NUM_PARS_SCENES"));
//			int num_pars_scenes =           Integer.parseInt((String) imp_pars.getProperty("NUM_PARS_SCENES"));
			double [] scene_offsets = new double [num_pars_scenes];
//			double [] scene_offsets = new double [num_pars_scenes];
			System.arraycopy(data[3], 0, scene_offsets, 0, num_pars_scenes);
			double [] scene_offsets = new double [num_scenes];
			System.arraycopy(data[TVAO_SCENE_OFFSET], 0, scene_offsets, 0, scene_offsets.length);
			// temporary patch, later they will be NaNs already - Already done !
			for (int i = 0; i < scene_offsets.length; i++) {
				if (indices[TVAO_SCENE_OFFSET][i] < 0) {
					data[TVAO_SCENE_OFFSET][i] = Double.NaN;
				}
			}
			
			for (int n = 0; n < 3; n++) {
			for (int n = 0; n < 3; n++) {
				if (woi.width * woi.height < data[n].length ) {
				if (woi.width * woi.height < data[n].length ) {
					double [] d = new double [woi.width * woi.height];
					double [] d = new double [woi.width * woi.height];
@@ -1655,8 +1667,6 @@ public class VegetationLMA {
				}
				}
			}
			}
			data[3] = scene_offsets;
			data[3] = scene_offsets;
			
			
		} else {
		} else {
			this.woi = woi;
			this.woi = woi;
			diff_offsets =              Boolean.parseBoolean((String) imp_pars.getProperty("DIFF_OFFSETS"));
			diff_offsets =              Boolean.parseBoolean((String) imp_pars.getProperty("DIFF_OFFSETS"));
@@ -2030,7 +2040,7 @@ public class VegetationLMA {
					woi); // Rectangle file_woi)
					woi); // Rectangle file_woi)
			segments[n] = new VegetationSegment(
			segments[n] = new VegetationSegment(
					woi, // Rectangle   woi,
					woi, // Rectangle   woi,
					tvao[3], // datadouble []   scene_offsets,
					tvao[TVAO_SCENE_OFFSET], // datadouble []   scene_offsets,
					new double [][] {tvao[0],tvao[1],tvao[2]}); // double [][]  tva) {} {}
					new double [][] {tvao[0],tvao[1],tvao[2]}); // double [][]  tva) {} {}
		}
		}
		// sort in line-scan order
		// sort in line-scan order
+85 −61

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Original line Diff line number Diff line
@@ -8,7 +8,7 @@ public class VegetationSegment {
	public double [][] tva;
	public double [][] tva;
	public VegetationSegment(
	public VegetationSegment(
			Rectangle   woi,
			Rectangle   woi,
			double []   scene_offsets,
			double []   scene_offsets, // has NaNs
			double [][]  tva) {
			double [][]  tva) {
		this.woi = woi;
		this.woi = woi;
		this.scene_offsets = scene_offsets;
		this.scene_offsets = scene_offsets;