@@ -120,6 +120,15 @@ public class BiQuadParameters {
...
@@ -120,6 +120,15 @@ public class BiQuadParameters {
publicdoublepf_damp_tilt=0.001;// Tilt cost for damping insufficient plane data
publicdoublepf_damp_tilt=0.001;// Tilt cost for damping insufficient plane data
publicdoublepf_rwsigma=0.7;// influence of far neighbors diminish as a Gaussian with this sigma
publicdoublepf_rwsigma=0.7;// influence of far neighbors diminish as a Gaussian with this sigma
publicdoublepf_rwsigma_narrow=0.2;// used to determine initial tilt ( 1/radius)
publicdoublepf_rwsigma_narrow=0.2;// used to determine initial tilt ( 1/radius)
publicbooleanpf_use_alt=false;// When fitting for the best plane - look for alernative measured tiles too
publicdoublepf_goal_fraction_rms=0.5;// Try to make rms to be this fraction of maximal acceptable by removing outliers
publicdoublepf_boost_low_density=0.8;// Strength assigned to fake tiles from neighbors (the lower - the higher)
// Apply when filling gaps, not when growing
publicintpf_fourq_min=1;// Each of the 4 corners should have at least this number of tiles.
publicintpf_fourq_gap=1;// Symmetrical vertical and horizontal center areas that do not belong to any corner
// int trimWeakFG(
// int trimWeakFG(
publicbooleanpf_en_trim_fg=false;// Trim weak FZG
publicbooleanpf_en_trim_fg=false;// Trim weak FZG
...
@@ -371,6 +380,20 @@ public class BiQuadParameters {
...
@@ -371,6 +380,20 @@ public class BiQuadParameters {
"Sigma is relative to selection radius (square half-side)");
"Sigma is relative to selection radius (square half-side)");
gd.addNumericField("Weight function Gaussian sigma (relative to radius) for initial plane fitting",this.pf_rwsigma_narrow,4,6,"",
gd.addNumericField("Weight function Gaussian sigma (relative to radius) for initial plane fitting",this.pf_rwsigma_narrow,4,6,"",
"Weight function Gaussian sigma (relative to selection radius) for initial plane fitting. May be ~=1/radius");
"Weight function Gaussian sigma (relative to selection radius) for initial plane fitting. May be ~=1/radius");
gd.addCheckbox("When fitting for the best plane - look for alernative measured tiles too",this.pf_use_alt,
"When selecting tiles that fit best to the plane, try alternative (weaker) disparities too");
gd.addNumericField("Try to make rms to be this fraction of maximal acceptable by removing outliers",this.pf_goal_fraction_rms,4,6,"pix",
"When removing outliers to fit planes, stop removing when the RMS of the remaining drops below this fraction of the maxium allowed RMS (should be < 1.0");
gd.addNumericField("Strength assigned to fake tiles from neighbors (the lower - the higher)",this.pf_boost_low_density,4,6,"pix",
"Returned strength assigned to the tiles increases with this value - seems to be a bug");
gd.addNumericField("Each of the 4 corners should have at least this number of tiles",this.pf_fourq_min,0,3,"",
"Apply (>0) only for filling gaps, not during expansion. It requires that every of the 4 corners of the sample square has this number of tiles for a plane");
gd.addNumericField("Four corners center gap half-width (1 - 1 tile, 2 - 3 tiles, 3 - 5 tiles, ...",this.pf_fourq_gap,0,3,"",
"Specifies corners of the sample square that should have tiles remain, after removing centre columns and center rows");
@@ -178,10 +186,19 @@ public class ImageDttParameters {
...
@@ -178,10 +186,19 @@ public class ImageDttParameters {
"Create selection mask for quadratic approximation inside square around initial maximum position, specify distance from the center");
"Create selection mask for quadratic approximation inside square around initial maximum position, specify distance from the center");
gd.addNumericField("Relative weight of non-convex (border) cell",this.cnvx_weight,6,8,"",
gd.addNumericField("Relative weight of non-convex (border) cell",this.cnvx_weight,6,8,"",
"Weight of the bi-convex points is 1.0, this value specifies reduced weight of the border (non-bi-convex) points");
"Weight of the bi-convex points is 1.0, this value specifies reduced weight of the border (non-bi-convex) points");
gd.addCheckbox("Always select 3x3 cells around integer maximum",this.cnvx_add3x3,
gd.addCheckbox("Always select 3x3 cells around integer maximum",this.cnvx_add3x3,
"Add 3x3 cells selection around the original argmax, regardless of bi-convex property");
"Add 3x3 cells selection around the original argmax, regardless of bi-convex property");
gd.addMessage("Window for pole detection mode");
gd.addNumericField("Strip height for pole detection",this.corr_strip_notch,0,3,"half-pix",
"Number of rows to combine/interpolate correlation results. Rows are twice denser than pixels correponding to largest baseline disparity");
gd.addNumericField("50% correlation window cutoff height for poles (0 in the center)",this.corr_notch_hwidth,3,6,"half-pix",
"Correlation window height argument for 50% value");
gd.addNumericField("0% to 100 % transition range for poles",this.corr_notch_blur,3,6,"half-pix",
"Transition range, shifted sine is used");
gd.addMessage("Window for niormal correlations");
gd.addNumericField("Number of rows to calculate CM disparity",this.corr_wndy_size,0,3,"",
gd.addNumericField("Number of rows to calculate CM disparity",this.corr_wndy_size,0,3,"",
"Number of rows to calculate maximum. Normally should be equal to the previous parameter");
"Number of rows to calculate maximum. Normally should be equal to the previous parameter");
...
@@ -233,6 +250,9 @@ public class ImageDttParameters {
...
@@ -233,6 +250,9 @@ public class ImageDttParameters {
gd.addCheckbox("Use new correlation methods compatible with x8 camera",this.corr_var_cam,
gd.addCheckbox("Use new correlation methods compatible with x8 camera",this.corr_var_cam,
"Debug feature to compare old/new methods");
"Debug feature to compare old/new methods");
gd.addNumericField("Normalization for the CM correlation strength",this.cm_max_normalization,6,8,"",
"Fraction of correlation maximum radius, being squared multiplied by maximum to have the same total mass. ~= 0.5, the lower the value, the higher strength reported by the CM");
// public double cm_max_normalization = 0.55; //
}
}
publicvoiddialogAnswers(GenericJTabbedDialoggd){
publicvoiddialogAnswers(GenericJTabbedDialoggd){
...
@@ -285,6 +305,10 @@ public class ImageDttParameters {
...
@@ -285,6 +305,10 @@ public class ImageDttParameters {
this.cnvx_weight=gd.getNextNumber();
this.cnvx_weight=gd.getNextNumber();
this.cnvx_add3x3=gd.getNextBoolean();
this.cnvx_add3x3=gd.getNextBoolean();
this.corr_strip_notch=(int)gd.getNextNumber();
this.corr_notch_hwidth=gd.getNextNumber();
this.corr_notch_blur=gd.getNextNumber();
this.corr_wndy_size=(int)gd.getNextNumber();
this.corr_wndy_size=(int)gd.getNextNumber();
this.corr_wndy_hwidth=gd.getNextNumber();
this.corr_wndy_hwidth=gd.getNextNumber();
...
@@ -314,6 +338,7 @@ public class ImageDttParameters {
...
@@ -314,6 +338,7 @@ public class ImageDttParameters {
this.lma_num_iter=(int)gd.getNextNumber();
this.lma_num_iter=(int)gd.getNextNumber();
this.lma_debug_level=(int)gd.getNextNumber();
this.lma_debug_level=(int)gd.getNextNumber();
this.corr_var_cam=gd.getNextBoolean();
this.corr_var_cam=gd.getNextBoolean();
this.cm_max_normalization=gd.getNextNumber();
}
}
...
@@ -366,6 +391,11 @@ public class ImageDttParameters {
...
@@ -366,6 +391,11 @@ public class ImageDttParameters {