gd.addCheckbox("Use existing image pair",use_existing_pair,"Use existing affine settings for this pair, do not use spiral search.");
}else{
@@ -1072,8 +1121,20 @@ public class ComboMatch {
gd.addNumericField("Minimal overlap",min_overlap,0,4,"scaled pix ^ 2","Minimal overlap area in square scaled pixels.");
gd.addNumericField("LMA iterations",num_iter_lma,0,2,"","Number of LMA iterations.");
gd.addCheckbox("Ignore worsening RMSE",ignore_rms,"Ignore worsening/not improving RMSE during spiral search.");
gd.addCheckbox("Write log file",log_append,"Enable writing log file with matching results.");
gd.addStringField("Log file full path",log_path,150,"Path of the log file to be appended.");
gd.addNumericField("Spiral search debug level",spiral_debug,0,3,"","Debug level during Spiral search.");
gd.addMessage("Parameters, common to all matching, not only spiral");
gd.addNumericField("Central area standard deviation",max_std,3,7,"","Central area limit by the standard deviation.");
gd.addNumericField("Central area minimal radius",min_std_rad,3,7,"tile","Minimal radius of the central area after all LMA passes.");
gd.addNumericField("Central area radius as fraction",rad_fraction,3,7,"","Central area radius as fraction of half minimal WOI dimension.");
gd.addNumericField("Maximal central area radius",max_tile_rad,3,7,"tiles","Absolute limit to the center area radius (eases bad peripheral matching).");
gd.addNumericField("Central area minimal fill",fill_fraction,3,7,"","Central area minimal fill for all but the last iteration.");
gd.addNumericField("Central area minimal fill final",fill_fraction_final,3,7,"","Central area minimal fill for the last iteration.");
gd.addNumericField("Relax metric error for no-SfM",ease_nosfm,3,7,"","Relax metric error for no-SfM scenes (sfm_gain==0).");
gd.showDialog();
if(gd.wasCanceled())returnnull;
if(pairwiseOrthoMatch!=null){
@@ -1089,7 +1150,18 @@ public class ComboMatch {
min_overlap=(int)gd.getNextNumber();
num_iter_lma=(int)gd.getNextNumber();
ignore_rms=gd.getNextBoolean();
log_append=gd.getNextBoolean();
log_path=gd.getNextString();
spiral_debug=(int)gd.getNextNumber();
search_step=gd.getNextNumber();
max_std=gd.getNextNumber();
min_std_rad=gd.getNextNumber();
rad_fraction=gd.getNextNumber();
max_tile_rad=gd.getNextNumber();
fill_fraction=gd.getNextNumber();
fill_fraction_final=gd.getNextNumber();
ease_nosfm=gd.getNextNumber();
if(use_existing_pair){
if(invert_exixting_pair){
System.out.println("Both direct and inverted matches are selected, using direct match");
@@ -1104,11 +1176,17 @@ public class ComboMatch {
double[][]affine0={{1,0,0},{0,1,0}};// will always stay the same
double[][]affine1={{1,0,0},{0,1,0}};// here (manual mode) start from the center, may use prediction in auto