gd.addCheckbox("Adjust ter elevation common",terr_fit_terr_elev,"Adjust terrain elevation common.");
gd.addCheckbox("Adjust ter elevation pixel",terr_fit_terr_elev_pix,"Adjust terrain elevation per-pixel.");
gd.addCheckbox("Adjust scene offsets",terr_fit_scenes,"Adjust scene offsets (start from 0 always?).");
gd.addCheckbox("Adjust scene offsets",terr_fit_scenes,"Adjust scene offsets (start from 0 always?).");
...
@@ -2179,6 +2191,7 @@ min_str_neib_fpn 0.35
...
@@ -2179,6 +2191,7 @@ min_str_neib_fpn 0.35
gd.addNumericField("Terrain diffusion",terr_terr_lpf,5,7,"","LPF for terrain pixels (diffusion to 4 neighbors).");
gd.addNumericField("Terrain diffusion",terr_terr_lpf,5,7,"","LPF for terrain pixels (diffusion to 4 neighbors).");
gd.addNumericField("Vegetation diffusion",terr_veget_lpf,5,7,"","LPF for vegetation pixels (diffusion to 4 neighbors).");
gd.addNumericField("Vegetation diffusion",terr_veget_lpf,5,7,"","LPF for vegetation pixels (diffusion to 4 neighbors).");
gd.addNumericField("Elevation diffusion",terr_elev_lpf,5,7,"","LPF for elevation pixels (diffusion to 4 neighbors).");
gd.addNumericField("Elevation diffusion",terr_elev_lpf,5,7,"","LPF for elevation pixels (diffusion to 4 neighbors).");
gd.addNumericField("Terrain elevation diffusion",terr_terr_elev_lpf,5,7,"","LPF for terrain elevation elevation pixels (diffusion to 4 neighbors).");
gd.addNumericField("Terrain pull",terr_terr_pull0,5,7,"","Terrain pixels pull to initial (pre-adjustment) values.");
gd.addNumericField("Terrain pull",terr_terr_pull0,5,7,"","Terrain pixels pull to initial (pre-adjustment) values.");
gd.addNumericField("Terrain pull up",terr_terr_pull_up,5,7,"","Terrain pixels pull to initial (pre-adjustment) values when it is colder than initial (<0 - sqme as above).");
gd.addNumericField("Terrain pull up",terr_terr_pull_up,5,7,"","Terrain pixels pull to initial (pre-adjustment) values when it is colder than initial (<0 - sqme as above).");
gd.addNumericField("Terrain pull to average",terr_terr_pull_avg,5,7,"","Pull terrain to the initial offset by the average offset of all terrain pixels.");
gd.addNumericField("Terrain pull to average",terr_terr_pull_avg,5,7,"","Pull terrain to the initial offset by the average offset of all terrain pixels.");
...
@@ -2186,6 +2199,7 @@ min_str_neib_fpn 0.35
...
@@ -2186,6 +2199,7 @@ min_str_neib_fpn 0.35
gd.addNumericField("Boost for low alpha",terr_veget_pull_low_alpha,5,7,"x","Scale vegetation pull (terr_veget_pull0) for low alpha (mostly terrain) .");
gd.addNumericField("Boost for low alpha",terr_veget_pull_low_alpha,5,7,"x","Scale vegetation pull (terr_veget_pull0) for low alpha (mostly terrain) .");
gd.addNumericField("Elevation pull",terr_elev_pull0,5,7,"","Elevation pixels pull to initial (pre-adjustment) values.");
gd.addNumericField("Elevation pull",terr_elev_pull0,5,7,"","Elevation pixels pull to initial (pre-adjustment) values.");
gd.addNumericField("Terrain elevation pull",terr_terr_elev_pull0,5,7,"","Terrain elevation pixels pull to initial (pre-adjustment) values.");
gd.addCheckbox("Enable low vegetation",terr_elev_alpha_en,"Enable loss for low vegetation with high opacity.");
gd.addCheckbox("Enable low vegetation",terr_elev_alpha_en,"Enable loss for low vegetation with high opacity.");
gd.addNumericField("Low vegetation loss",terr_elev_alpha,5,7,"","Multiply alpha by under-low elevation for loss.");
gd.addNumericField("Low vegetation loss",terr_elev_alpha,5,7,"","Multiply alpha by under-low elevation for loss.");
gd.addNumericField("Low vegetation power",terr_elev_alpha_pwr,5,7,"","Raise alpha to this power for low vegetation loss.");
gd.addNumericField("Low vegetation power",terr_elev_alpha_pwr,5,7,"","Raise alpha to this power for low vegetation loss.");
...
@@ -2221,13 +2235,18 @@ min_str_neib_fpn 0.35
...
@@ -2221,13 +2235,18 @@ min_str_neib_fpn 0.35
gd.addNumericField("RMSE difference",terr_rms_diff,10,12,"","Exit if RMSE improvement is lower.");
gd.addNumericField("RMSE difference",terr_rms_diff,10,12,"","Exit if RMSE improvement is lower.");
gd.addNumericField("Last LMA series",terr_last_series,0,3,"","Last LMA series, -1 - to last available in the sequence below.");
gd.addNumericField("Last LMA series",terr_last_series,0,3,"","Last LMA series, -1 - to last available in the sequence below.");
gd.addStringField("Maximal iterations",intsToString(terr_num_iters),40,"Maximal number of LMA iterations per mode, 1 or multiple values.");
gd.addStringField("Maximal iterations",intsToString(terr_num_iters),40,"Maximal number of LMA iterations per series, 1 or several values.");
gd.addCheckbox("Adjust pixel elevation",terr_only_pix,"Force per-pixel terrain elevation adjustment in terrain-only mode.");
gd.addNumericField("Terrain-only iterations",terr_only_series,0,3,"","Last LMA series in terrain-only mode, -1 - to last available in the sequence below.");
gd.addStringField("Maximal iterations",intsToString(terr_only_num_iters),40,"Maximal number of LMA iterations per series, 1 or several values.");
@@ -1535,6 +1535,7 @@ public class VegetationModel {
...
@@ -1535,6 +1535,7 @@ public class VegetationModel {
doubleterr_lpf=clt_parameters.imp.terr_terr_lpf;// 0.1; // 0.15; /// 0.2; /// 0.1; // pull terrain to average of 4 neighbors (very small)
doubleterr_lpf=clt_parameters.imp.terr_terr_lpf;// 0.1; // 0.15; /// 0.2; /// 0.1; // pull terrain to average of 4 neighbors (very small)
doubleveget_lpf=clt_parameters.imp.terr_veget_lpf;// 0.2; //0.15; /// 0.2; //// 0.01; /// 0.1; // pull vegetation to average of 4 neighbors (very small - maybe not needed)
doubleveget_lpf=clt_parameters.imp.terr_veget_lpf;// 0.2; //0.15; /// 0.2; //// 0.01; /// 0.1; // pull vegetation to average of 4 neighbors (very small - maybe not needed)
doubleterr_pull0=clt_parameters.imp.terr_terr_pull0;// 0.1; //0.03; ////// 0.05; ///// 0.1; //// 0.01; /// 0.2; /// 0.1; //pull terrain to zero (makes sense with UM
doubleterr_pull0=clt_parameters.imp.terr_terr_pull0;// 0.1; //0.03; ////// 0.05; ///// 0.1; //// 0.01; /// 0.2; /// 0.1; //pull terrain to zero (makes sense with UM
doubleterr_pull_up=clt_parameters.imp.terr_terr_pull_up;// 0.2; // Terrain pixels pull to initial (pre-adjustment) values when it is colder than initial.
doubleterr_pull_up=clt_parameters.imp.terr_terr_pull_up;// 0.2; // Terrain pixels pull to initial (pre-adjustment) values when it is colder than initial.
doubleterr_pull_avg=clt_parameters.imp.terr_terr_pull_avg;// 0.1; // Pull terrain to the initial offset by the average offset of all terrain pixels
doubleterr_pull_avg=clt_parameters.imp.terr_terr_pull_avg;// 0.1; // Pull terrain to the initial offset by the average offset of all terrain pixels
...
@@ -1543,6 +1544,9 @@ public class VegetationModel {
...
@@ -1543,6 +1544,9 @@ public class VegetationModel {
doubleveget_pull_low_alpha=clt_parameters.imp.terr_veget_pull_low_alpha;//10; // scale pull0 for low alpha (mostly terrain)
doubleveget_pull_low_alpha=clt_parameters.imp.terr_veget_pull_low_alpha;//10; // scale pull0 for low alpha (mostly terrain)
booleanterr_only_special=clt_parameters.imp.terr_only_special;// true; // special sequences for terrain-only tiles
booleanterr_only_pix=clt_parameters.imp.terr_only_pix;// true; // force per-pixel terrain elevation in terrain-only mode, overwrite fits_disable[TVAO_TERR_ELEV_PIX]
intterr_only_series=clt_parameters.imp.terr_only_series;// -1; // similar to terr_last_series but for terrain-only mode (<0 - length of terr_only_num_iters)
int[]terr_only_num_iters=clt_parameters.imp.terr_only_num_iters;// {25}; // number of iterations
elev_pull0,// final double elev_pull0, // pull elevation to initial (pre-adjustment) values
elev_pull0,// final double elev_pull0, // pull elevation to initial (pre-adjustment) values
terr_elev_pull0,// final double terr_elev_pull0, // pull terrain elevation to segment average
elev_alpha_en,// final boolean elev_alpha_en, // false; // Enable loss for low vegetation with high opacity
elev_alpha_en,// final boolean elev_alpha_en, // false; // Enable loss for low vegetation with high opacity
elev_alpha,// final double elev_alpha, // 1.0; // multiply alpha by under-low elevation for loss
elev_alpha,// final double elev_alpha, // 1.0; // multiply alpha by under-low elevation for loss
elev_alpha_pwr,// final double elev_alpha_pwr, // 2.0; // raise alpha to this power (when alpha > 0)
elev_alpha_pwr,// final double elev_alpha_pwr, // 2.0; // raise alpha to this power (when alpha > 0)
...
@@ -2155,8 +2171,9 @@ public class VegetationModel {
...
@@ -2155,8 +2171,9 @@ public class VegetationModel {
ttop_rel_rad,// final double ttop_rel_rad, // 0.25; // Relative (to the top height) sample ring radius
ttop_rel_rad,// final double ttop_rel_rad, // 0.25; // Relative (to the top height) sample ring radius
ttop_frac,// final double ttop_frac, // 0.5; // Minimal fraction of the ring pixels below sample level
ttop_frac,// final double ttop_frac, // 0.5; // Minimal fraction of the ring pixels below sample level
ttop_rem_rad,// final double ttop_rem_rad, // 0.25; // Relative (to the top height) remove transparency radius
ttop_rem_rad,// final double ttop_rem_rad, // 0.25; // Relative (to the top height) remove transparency radius
terr_only_special,// final boolean terr_only_special,//true; // special sequences for terrain-only tiles
boost_parallax,// final double boost_parallax, // increase weight of scene with maximal parallax relative to the reference scene
terr_only_pix,// final boolean terr_only_pix, //true; // force per-pixel terrain elevation in terrain-only mode, overwrite fits_disable[TVAO_TERR_ELEV_PIX]
boost_parallax,// final double boost_parallax, // increase weight of scene with maximal parallax relative to the reference scene
max_parallax,//final double max_parallax, // do not consider maximal parallax above this (consider it a glitch)
max_parallax,//final double max_parallax, // do not consider maximal parallax above this (consider it a glitch)
debugLevel,// final int debugLevel);
debugLevel,// final int debugLevel);
debug_path,// final String debug_path,
debug_path,// final String debug_path,
...
@@ -2167,6 +2184,12 @@ public class VegetationModel {
...
@@ -2167,6 +2184,12 @@ public class VegetationModel {
System.out.println("Insufficient data in this segment, skipping it.");
System.out.println("Insufficient data in this segment, skipping it.");