booleanaugment_pairwise_affines=false;// needs to repeat create_pairwise_matches to update overlaps
booleanequalize_overlaps=false;
booleanequalize_overlaps=false;
booleancreate_map=false;
booleancreate_map=false;
booleancreate_equalize=false;
booleancreate_equalize=false;
...
@@ -240,6 +241,7 @@ public class ComboMatch {
...
@@ -240,6 +241,7 @@ public class ComboMatch {
gd.addCheckbox("Show combo maps/stats",show_combo,"Generate/save combo maps and stats.");
gd.addCheckbox("Show combo maps/stats",show_combo,"Generate/save combo maps and stats.");
gd.addCheckbox("Create overlap pairs",create_pairwise_matches,"Create scene pairs overlaps.");
gd.addCheckbox("Create overlap pairs",create_pairwise_matches,"Create scene pairs overlaps.");
gd.addCheckbox("Create pairwise affines",create_pairwise_affines,"Create affines for scene pairs.");
gd.addCheckbox("Create pairwise affines",create_pairwise_affines,"Create affines for scene pairs.");
gd.addCheckbox("Augment pairwise affines",augment_pairwise_affines,"Augment pairwise affines after building initial map and re-running create_pairwise_matches.");
gd.addCheckbox("Equalize overlap pairs",equalize_overlaps,"Equalize intensities in overlaps.");
gd.addCheckbox("Equalize overlap pairs",equalize_overlaps,"Equalize intensities in overlaps.");
gd.addCheckbox("Create map",create_map,"Create combined map from pairwise matches.");
gd.addCheckbox("Create map",create_map,"Create combined map from pairwise matches.");
gd.addCheckbox("Equalize intensities",create_equalize,"Create map intensities equalization from pairwise matches.");
gd.addCheckbox("Equalize intensities",create_equalize,"Create map intensities equalization from pairwise matches.");
...
@@ -305,6 +307,7 @@ public class ComboMatch {
...
@@ -305,6 +307,7 @@ public class ComboMatch {
show_combo=gd.getNextBoolean();
show_combo=gd.getNextBoolean();
create_pairwise_matches=gd.getNextBoolean();
create_pairwise_matches=gd.getNextBoolean();
create_pairwise_affines=gd.getNextBoolean();
create_pairwise_affines=gd.getNextBoolean();
augment_pairwise_affines=gd.getNextBoolean();
equalize_overlaps=gd.getNextBoolean();
equalize_overlaps=gd.getNextBoolean();
create_map=gd.getNextBoolean();
create_map=gd.getNextBoolean();
create_equalize=gd.getNextBoolean();
create_equalize=gd.getNextBoolean();
...
@@ -823,17 +826,22 @@ public class ComboMatch {
...
@@ -823,17 +826,22 @@ public class ComboMatch {
returnok;// Just exit, do not try other commands. if (!ok) return false;
returnok;// Just exit, do not try other commands. if (!ok) return false;
}
}
if(create_pairwise_affines){
if(augment_pairwise_affines){
// boolean ok =maps_collection.getIntersectedPairs(
gdf.addNumericField("Minimal scene overlap (0..1)",flt_min_overlap,3,7,"","Minimal overlap of the scenes to keep (0-no overlap, 1.0 - smaller scene is inside the parger one.");
gdf.addNumericField("Maximal scene overlap (0..1)",flt_max_overlap,3,7,"","Maximal overlap of the scenes to keep (0-no overlap, 1.0 - smaller scene is inside the parger one.");
gdf.addCheckbox("Filter by zoom level",flt_filt_zoom,"Filter by the zoom level used for matching.");
gdf.addNumericField("Minimal zoom",flt_min_zoom,0,3,"","Minimal zoom level used for matching.");
gdf.addNumericField("Maximal zoom",flt_max_zoom,0,3,"","Maximal zoom level used for matching.");
gdf.addMessage("Low-resolution match parameters");
gdf.addCheckbox("Use low-res in augmentation",ospir_augment,"Use low-res matching during augmenting (false - skip, go to high-res).");
gdf.addNumericField("Good RMSE, low-res",max_rms,3,7,"scaled pix","Maximal RMSE to consider match, in scaled pixels, during spiral.");
gdf.addNumericField("Good RMSE, final",max_rms_refine,3,7,"scaled pix","Maximal RMSE to consider match, in scaled pixels, during refine.");
gdf.addNumericField("Minimal overlap",min_overlap_tiles,0,4,"scaled pix ^ 2","Minimal overlap area in square scaled pixels.");
gdf.addNumericField("Mitigate small overlap",double_threshold,3,7,"","For small overlaps increase zoom by 1 and range - twice.");
gdf.addNumericField("LMA iterations",num_iter_lma,0,2,"","Number of LMA iterations during spiral search.");
gdf.addNumericField("RMSE at first iteration",max_rms_iter[0],3,7,"scaled pix","Maximal RMSE at first iteration.");
gdf.addNumericField("RMSE at second iteration",max_rms_iter[1],3,7,"scaled pix","Maximal RMSE at second iteration.");
gdf.addNumericField("Remove fraction of worst matches",frac_remove,3,7,"","When fitting scenes remove this fraction of worst match tiles.");
gdf.addNumericField("Maximal metric error",metric_err,3,7,"m","Maximal tolerable fitting error caused by elevation variations.");
// gdf.addCheckbox ("Use scenes' affine", pmtch_use_affine, "Use known scenes' affine matrices, false - start from scratch (unity) ones.");
gdf.addNumericField("Central area standard deviation",max_std,3,7,"","Central area limit by the standard deviation.");
gdf.addNumericField("Central area minimal radius",min_std_rad,3,7,"tile","Minimal radius of the central area after all LMA passes.");
gdf.addCheckbox("Ignore previous RMSE",ignore_prev_rms,"Do not exit full fitting cycles if the RMSE worsened/not improved.");
gdf.addNumericField("Number of fitting iterations",num_tries,0,3,"","number of full fittng iterations.");
gdf.addNumericField("Central area radius as fraction",rad_fraction,3,7,"","Central area radius as fraction of half minimal WOI dimension.");
gdf.addNumericField("Maximal central area radius",max_tile_rad,3,7,"tiles","Absolute limit to the center area radius (eases bad peripheral matching).");
gdf.addNumericField("Central area minimal fill",fill_fraction,3,7,"","Central area minimal fill for all but the last iteration.");
gdf.addNumericField("Central area minimal fill final",fill_fraction_final,3,7,"","Central area minimal fill for the last iteration.");
gdf.addNumericField("Relax metric error for no-SfM",ease_nosfm,3,7,"","Relax metric error for no-SfM scenes (sfm_gain==0).");
gdf.addNumericField("Pull skew (rotation)",pull_skew,3,7,"","Prevent pairwise match from rotation.");
gdf.addNumericField("Pull tilt",pull_tilt,3,7,"","Prevent pairwise match from tilt.");
gdf.addNumericField("Pull scale",pull_scale,3,7,"","Prevent pairwise match from scaling.");
gdf.addMessage("Log and Save, and Debug parameters");
gdf.addCheckbox("Save state after each match",save_each,"Update state file after each match generation to mitigate possible crashes.");
gdf.addCheckbox("Write log file",log_append,"Enable writing log file with matching results.");
gdf.addStringField("Log file full path",log_path,150,"Path of the log file to be appended.");
gdf.addNumericField("Debug level",debugLevel,0,3,"","Debug level during Spiral search.");
gdf.addNumericField("Start scene (skip all earlier)",min_scene,0,3,"","To be able to continue skipping some.");
gdf.addCheckbox("Update configuration",flt_update_config,"Update matching configuration parameters to be saved as defaults.");