Commit ba860911 authored by Andrey Filippov's avatar Andrey Filippov

Before individual weights for X/Y interscene matching

parent 7b84dba6
...@@ -185,7 +185,7 @@ public class EyesisCorrectionParameters { ...@@ -185,7 +185,7 @@ public class EyesisCorrectionParameters {
public boolean clt_batch_skip_scenes = false; // Skip all per-scene processing, go directly to processing sequences public boolean clt_batch_skip_scenes = false; // Skip all per-scene processing, go directly to processing sequences
public boolean clt_batch_pose_pairs_main = false; // calculate pair-wise camera poses public boolean clt_batch_pose_pairs_main = false; // calculate pair-wise camera poses
public boolean clt_batch_pose_last_main = false; // calculate camera poses realtive to the last scene public boolean clt_batch_pose_last_main = false; // calculate camera poses relative to the last scene
public boolean clt_batch_pose_scene_main = false; // calculate camera poses relative to all other ones public boolean clt_batch_pose_scene_main = false; // calculate camera poses relative to all other ones
public int clt_batch_offset_main = 0; // when selecting multiple reference scene, offset from the last one public int clt_batch_offset_main = 0; // when selecting multiple reference scene, offset from the last one
public int clt_batch_step_main = 3; // step (decreasing timestamp) to select reference frames in a sequence public int clt_batch_step_main = 3; // step (decreasing timestamp) to select reference frames in a sequence
......
...@@ -2596,6 +2596,7 @@ public class Corr2dLMA { ...@@ -2596,6 +2596,7 @@ public class Corr2dLMA {
// has common threshold for scale ratios for foreground and background corr. maximums // has common threshold for scale ratios for foreground and background corr. maximums
public double [][] lmaDisparityStrength( public double [][] lmaDisparityStrength(
boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
double lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude double lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
double lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) double lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
double lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) double lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -2607,6 +2608,7 @@ public class Corr2dLMA { ...@@ -2607,6 +2608,7 @@ public class Corr2dLMA {
double lma_ac_offset // add to a,c coefficients for near-lines where A,C could become negative because of window double lma_ac_offset // add to a,c coefficients for near-lines where A,C could become negative because of window
){ ){
return lmaDisparityStrengths( return lmaDisparityStrengths(
bypass_tests, //boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
lmas_min_amp, // double lmas_min_amp_fg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude lmas_min_amp, // double lmas_min_amp_fg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
lmas_min_amp, // double lmas_min_amp_bg, // Same for bg correlation max (only used for multi-max) lmas_min_amp, // double lmas_min_amp_bg, // Same for bg correlation max (only used for multi-max)
lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
...@@ -2623,6 +2625,7 @@ public class Corr2dLMA { ...@@ -2623,6 +2625,7 @@ public class Corr2dLMA {
// has separate thresholds for scale ratios for foreground and background corr. maximums // has separate thresholds for scale ratios for foreground and background corr. maximums
public double [][][] lmaDisparityStrengths( public double [][][] lmaDisparityStrengths(
boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
double lmas_min_amp_fg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude double lmas_min_amp_fg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
double lmas_min_amp_bg, // Same for bg correlation max (only used for multi-max) double lmas_min_amp_bg, // Same for bg correlation max (only used for multi-max)
double lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) double lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
...@@ -2635,7 +2638,9 @@ public class Corr2dLMA { ...@@ -2635,7 +2638,9 @@ public class Corr2dLMA {
boolean dbg_mode, boolean dbg_mode,
double lma_ac_offset // add to a,c coefficients for near-lines where A,C could become negative because of window double lma_ac_offset // add to a,c coefficients for near-lines where A,C could become negative because of window
){ ){
double [][][] ds = new double[numMax][numTiles][dbg_mode? 13 : 3];
double [][][] ds = new double[numMax][numTiles][dbg_mode? 14 : 3];
int reason_index = (dbg_mode && bypass_tests)? 13:-1;
double [] rms = getRmsTile(); double [] rms = getRmsTile();
for (int nmax = 0; nmax < numMax; nmax++) { for (int nmax = 0; nmax < numMax; nmax++) {
double [][] maxmin_amp = getMaxMinAmpTile(nmax); // nmax double [][] maxmin_amp = getMaxMinAmpTile(nmax); // nmax
...@@ -2669,32 +2674,60 @@ public class Corr2dLMA { ...@@ -2669,32 +2674,60 @@ public class Corr2dLMA {
double avg = 0.50*(maxmin_amp[tile][0]+maxmin_amp[tile][1]); // max_min[1] can be negative - filter it out? double avg = 0.50*(maxmin_amp[tile][0]+maxmin_amp[tile][1]); // max_min[1] can be negative - filter it out?
double rrms = rms[tile]/avg; double rrms = rms[tile]/avg;
if ((lma_max_rel_rms > 0.00) && (rrms > lma_max_rel_rms)) { if ((lma_max_rel_rms > 0.00) && (rrms > lma_max_rel_rms)) {
continue; if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 1;
} else {
continue;
}
} }
if (Math.max(abc[tile][0], abc[tile][2]) < (lma_min_max_ac + lma_ac_offset)) { // so old lma_min_max_ac will stay if (Math.max(abc[tile][0], abc[tile][2]) < (lma_min_max_ac + lma_ac_offset)) { // so old lma_min_max_ac will stay
continue; if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 2;
} else {
continue;
}
} }
if ((lma_min_min_ac > 0.0) && ((abc[tile][0] < lma_min_min_ac) || (abc[tile][2] < lma_min_min_ac))){ if ((lma_min_min_ac > 0.0) && ((abc[tile][0] < lma_min_min_ac) || (abc[tile][2] < lma_min_min_ac))){
continue; // too large a or c (not sharp along at least one direction) if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 3;
} else {
continue; // too large a or c (not sharp along at least one direction)
}
} }
double area = 0.0; double area = 1000.0;
if ((abc[tile][0] > 0.0) && (abc[tile][2] > 0.0)) { if ((abc[tile][0] > 0.0) && (abc[tile][2] > 0.0)) {
// double area_old = 1.0/abc[tile][0] + 1.0/abc[tile][2]; // area of a maximum // double area_old = 1.0/abc[tile][0] + 1.0/abc[tile][2]; // area of a maximum
area = 1.0/Math.sqrt(abc[tile][0] * abc[tile][2]); area = 1.0/Math.sqrt(abc[tile][0] * abc[tile][2]);
if ((lma_max_area > 0) && (area > lma_max_area)) { if ((lma_max_area > 0) && (area > lma_max_area)) {
continue; // too wide maximum if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 4;
} else {
continue; // too wide maximum
}
} }
} else { } else {
continue; // not a maximum if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 5;
} else {
continue;// not a maximum (keep area = 1000.0)
}
} }
double strength = Math.sqrt(avg/rrms); double strength = Math.sqrt(avg/rrms);
// double disparity = -all_pars[DISP_INDEX + offs]; // double disparity = -all_pars[DISP_INDEX + offs];
if ((strength < lma_min_strength) || Double.isNaN(disparity)) { if ((strength < lma_min_strength) || Double.isNaN(disparity)) {
continue; if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 6;
} else {
continue;
}
} }
double ac = abc[tile][0] * abc[tile][2]; double ac = abc[tile][0] * abc[tile][2];
if (ac < 0) { if (ac < 0) {
continue; if (bypass_tests) {
if ((reason_index > 0) && (ds[nmax][tile][reason_index] == 0)) ds[nmax][tile][reason_index] = 7;
} else {
continue;
}
} }
double strength1 = Math.sqrt(strength * Math.sqrt(ac)); // / area ); // new strength double strength1 = Math.sqrt(strength * Math.sqrt(ac)); // / area ); // new strength
ds[nmax][tile][0] = disparity; ds[nmax][tile][0] = disparity;
...@@ -2711,7 +2744,6 @@ public class Corr2dLMA { ...@@ -2711,7 +2744,6 @@ public class Corr2dLMA {
ds[nmax][tile][10] = strength; ds[nmax][tile][10] = strength;
ds[nmax][tile][11] = rrms; ds[nmax][tile][11] = rrms;
ds[nmax][tile][12] = rms[tile]; ds[nmax][tile][12] = rms[tile];
} }
} }
} }
......
...@@ -3801,7 +3801,9 @@ public class Correlation2d { ...@@ -3801,7 +3801,9 @@ public class Correlation2d {
} }
// double [][] ds = lma.getDisparityStrength(); // double [][] ds = lma.getDisparityStrength();
ds = lma.lmaDisparityStrength( ds = lma.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -3906,6 +3908,7 @@ public class Correlation2d { ...@@ -3906,6 +3908,7 @@ public class Correlation2d {
} }
// double [][] ds = lma.getDisparityStrength(); // double [][] ds = lma.getDisparityStrength();
ds = lma.lmaDisparityStrength( ds = lma.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -4414,6 +4417,7 @@ public class Correlation2d { ...@@ -4414,6 +4417,7 @@ public class Correlation2d {
double [][] dispStr = lma.lmaDisparityStrength( //TODO: add parameter to filter out negative minimums ? double [][] dispStr = lma.lmaDisparityStrength( //TODO: add parameter to filter out negative minimums ?
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -4423,6 +4427,7 @@ public class Correlation2d { ...@@ -4423,6 +4427,7 @@ public class Correlation2d {
imgdtt_params.lma_str_scale, // convert lma-generated strength to match previous ones - scale imgdtt_params.lma_str_scale, // convert lma-generated strength to match previous ones - scale
imgdtt_params.lma_str_offset, // convert lma-generated strength to match previous ones - add to result imgdtt_params.lma_str_offset, // convert lma-generated strength to match previous ones - add to result
imgdtt_params.lma_ac_offset // Add to A, C coefficients for near-lines where A,C could become negative because of window imgdtt_params.lma_ac_offset // Add to A, C coefficients for near-lines where A,C could become negative because of window
); );
if (dispStr[0][1] <= 0) { if (dispStr[0][1] <= 0) {
lmaSuccess = false; lmaSuccess = false;
...@@ -4942,6 +4947,8 @@ public class Correlation2d { ...@@ -4942,6 +4947,8 @@ public class Correlation2d {
if (lmaSuccess) { if (lmaSuccess) {
lma.updateFromVector(); lma.updateFromVector();
double [][][] dispStrs = lma.lmaDisparityStrengths( //TODO: add parameter to filter out negative minimums ? double [][][] dispStrs = lma.lmaDisparityStrengths( //TODO: add parameter to filter out negative minimums ?
imgdtt_params.lmamask_dbg, // false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_min_amp_bg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp_bg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
...@@ -4953,6 +4960,11 @@ public class Correlation2d { ...@@ -4953,6 +4960,11 @@ public class Correlation2d {
imgdtt_params.lma_str_offset, // convert lma-generated strength to match previous ones - add to result imgdtt_params.lma_str_offset, // convert lma-generated strength to match previous ones - add to result
false, // boolean dbg_mode false, // boolean dbg_mode
imgdtt_params.lma_ac_offset // Add to A, C coefficients for near-lines where A,C could become negative because of window imgdtt_params.lma_ac_offset // Add to A, C coefficients for near-lines where A,C could become negative because of window
); );
for (int nmax = 00; nmax < dispStrs.length; nmax++) if (dispStrs[nmax][0][1] <= 0) { for (int nmax = 00; nmax < dispStrs.length; nmax++) if (dispStrs[nmax][0][1] <= 0) {
lmaSuccess = false; lmaSuccess = false;
......
...@@ -2860,8 +2860,11 @@ public class ImageDtt extends ImageDttCPU { ...@@ -2860,8 +2860,11 @@ public class ImageDtt extends ImageDttCPU {
// keep for now for mono, find out what do they mean for macro mode // keep for now for mono, find out what do they mean for macro mode
final int corr_size = transform_size * 2 - 1; final int corr_size = transform_size * 2 - 1;
final String[] debug_lma_titles_nobi = {"disp_samples","num_cnvx_samples","num_comb_samples", "num_lmas","num_iters","rms"}; //FIXME: lmaDisparityStrengths expects length = 14;
final String[] debug_lma_titles_bi = {"disparity","strength_mod","strength", "area","ac","min(a,c)","max(a,c)","a","c","b","str1","rrms","rms"}; final String[] debug_lma_titles_nobi = {"disp_samples","num_cnvx_samples","num_comb_samples",
"num_lmas","num_iters","rms"};
final String[] debug_lma_titles_bi = {"disparity","strength_mod","strength", "area","ac","min(a,c)",
"max(a,c)","a","c","b","str1","rrms","rms","fail_reason"};
final String[] debug_lma_titles= imgdtt_params.bimax_dual_LMA? debug_lma_titles_bi:debug_lma_titles_nobi; final String[] debug_lma_titles= imgdtt_params.bimax_dual_LMA? debug_lma_titles_bi:debug_lma_titles_nobi;
// final double [][] debug_lma = imgdtt_params.lmamask_dbg? (new double [6][tilesX*tilesY]):null; // final double [][] debug_lma = imgdtt_params.lmamask_dbg? (new double [6][tilesX*tilesY]):null;
final double [][] debug_lma = imgdtt_params.lmamask_dbg? (new double [debug_lma_titles.length][tilesX*tilesY]):null; final double [][] debug_lma = imgdtt_params.lmamask_dbg? (new double [debug_lma_titles.length][tilesX*tilesY]):null;
...@@ -3237,6 +3240,7 @@ public class ImageDtt extends ImageDttCPU { ...@@ -3237,6 +3240,7 @@ public class ImageDtt extends ImageDttCPU {
if (lma_dual != null) { if (lma_dual != null) {
boolean dbg_dispStrs = (debug_lma != null); boolean dbg_dispStrs = (debug_lma != null);
double [][][] dispStrs = lma_dual.lmaDisparityStrengths( //TODO: add parameter to filter out negative minimums ? double [][][] dispStrs = lma_dual.lmaDisparityStrengths( //TODO: add parameter to filter out negative minimums ?
dbg_dispStrs, // false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_min_amp_bg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp_bg, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
...@@ -3365,6 +3369,7 @@ public class ImageDtt extends ImageDttCPU { ...@@ -3365,6 +3369,7 @@ public class ImageDtt extends ImageDttCPU {
double [][] ds = null; double [][] ds = null;
if (lma2 != null) { if (lma2 != null) {
ds = lma2.lmaDisparityStrength( ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -4821,6 +4826,7 @@ public class ImageDtt extends ImageDttCPU { ...@@ -4821,6 +4826,7 @@ public class ImageDtt extends ImageDttCPU {
if (dbg_img != null) dbg_img[1][nclust] = 1.0; if (dbg_img != null) dbg_img[1][nclust] = 1.0;
// was for single tile // was for single tile
disp_str = lma2.lmaDisparityStrength( disp_str = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -5119,6 +5125,7 @@ public class ImageDtt extends ImageDttCPU { ...@@ -5119,6 +5125,7 @@ public class ImageDtt extends ImageDttCPU {
if (lma2 != null) { if (lma2 != null) {
// was for single tile // was for single tile
disp_str = lma2.lmaDisparityStrength( disp_str = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
......
...@@ -2234,6 +2234,7 @@ public class ImageDttCPU { ...@@ -2234,6 +2234,7 @@ public class ImageDttCPU {
if (lma2 != null) { if (lma2 != null) {
dbg_num_good_lma ++; dbg_num_good_lma ++;
disp_str[cTile] = lma2.lmaDisparityStrength( disp_str[cTile] = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -2418,6 +2419,7 @@ public class ImageDttCPU { ...@@ -2418,6 +2419,7 @@ public class ImageDttCPU {
double [][] ddnd = lma2.getDdNd(); double [][] ddnd = lma2.getDdNd();
double [] stats = lma2.getStats(num_good_tiles); double [] stats = lma2.getStats(num_good_tiles);
double [][] lma_ds = lma2.lmaDisparityStrength( double [][] lma_ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lma_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lma_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -3156,6 +3158,7 @@ public class ImageDttCPU { ...@@ -3156,6 +3158,7 @@ public class ImageDttCPU {
double [][] ds = null; double [][] ds = null;
if (lma2 != null) { if (lma2 != null) {
ds = lma2.lmaDisparityStrength( ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -4262,6 +4265,7 @@ public class ImageDttCPU { ...@@ -4262,6 +4265,7 @@ public class ImageDttCPU {
double [][] ds = null; double [][] ds = null;
if (lma2 != null) { if (lma2 != null) {
ds = lma2.lmaDisparityStrength( ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -5183,6 +5187,7 @@ public class ImageDttCPU { ...@@ -5183,6 +5187,7 @@ public class ImageDttCPU {
double [][] ds = null; double [][] ds = null;
if (lma2 != null) { if (lma2 != null) {
ds = lma2.lmaDisparityStrength( ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -15610,6 +15615,7 @@ public class ImageDttCPU { ...@@ -15610,6 +15615,7 @@ public class ImageDttCPU {
double [][] ds = null; double [][] ds = null;
if (lma2 != null) { if (lma2 != null) {
ds = lma2.lmaDisparityStrength( ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
...@@ -16621,6 +16627,7 @@ public class ImageDttCPU { ...@@ -16621,6 +16627,7 @@ public class ImageDttCPU {
double [][] ds = null; double [][] ds = null;
if (lma2 != null) { if (lma2 != null) {
ds = lma2.lmaDisparityStrength( ds = lma2.lmaDisparityStrength(
false, // boolean bypass_tests, // keep even weak for later analysis. Normally - only in test mode
imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude imgdtt_params.lmas_min_amp, // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) imgdtt_params.lmas_max_rel_rms, // maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS) imgdtt_params.lmas_min_strength, // minimal composite strength (sqrt(average amp squared over absolute RMS)
......
...@@ -221,11 +221,11 @@ public class ImageDttParameters { ...@@ -221,11 +221,11 @@ public class ImageDttParameters {
// for small disparities 0.5...0.7 is OK, for larger, and small objects on uniform background, may need 0.2 // for small disparities 0.5...0.7 is OK, for larger, and small objects on uniform background, may need 0.2
public double lmas_min_amp = 0.1; // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude public double lmas_min_amp = 0.1; // minimal ratio of minimal pair correlation amplitude to maximal pair correlation amplitude
public double lmas_min_amp_bg = 0.01; // same for background objects (all but fg) public double lmas_min_amp_bg = 0.01; // same for background objects (all but fg)
public double lmas_max_rel_rms = 0.3; // LWIR16: 0.5 maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3) public double lmas_max_rel_rms = 0.5; // 0.3; // LWIR16: 0.5 maximal relative (to average max/min amplitude LMA RMS) // May be up to 0.3)
public double lmas_min_strength = 1.1; // 0.7; // LWIR16: 0.4 minimal composite strength (sqrt(average amp squared over absolute RMS) public double lmas_min_strength = 1.0; // 1.1; // 0.7; // LWIR16: 0.4 minimal composite strength (sqrt(average amp squared over absolute RMS)
public double lmas_min_max_ac = 0.175; // 0.14; // LWIR16: 0.01 maximal of a and C coefficients minimum (measures sharpest point/line) public double lmas_min_max_ac = 0.04; // 0.175; // 0.14; // LWIR16: 0.01 maximal of a and C coefficients minimum (measures sharpest point/line)
public double lmas_min_min_ac = 0.003; // LWIR16: 0.007 minimal of a and C coefficients minimum (measures sharpest point) public double lmas_min_min_ac = 0.003; // LWIR16: 0.007 minimal of a and C coefficients minimum (measures sharpest point)
public double lmas_max_area = 30.0; // LWIR16: 0.0 maximal half-area (if > 0.0) public double lmas_max_area = 45.0; // 30.0; // LWIR16: 0.0 maximal half-area (if > 0.0)
// public boolean lma_gaussian = false; // model correlation maximum as a Gaussian (false - as a parabola) // public boolean lma_gaussian = false; // model correlation maximum as a Gaussian (false - as a parabola)
public int lma_gaussian = 0; // 0 - parabola, 1 - Gaussian, 2 - limited parabola, 3 - limited squared parabola public int lma_gaussian = 0; // 0 - parabola, 1 - Gaussian, 2 - limited parabola, 3 - limited squared parabola
...@@ -1128,6 +1128,7 @@ public class ImageDttParameters { ...@@ -1128,6 +1128,7 @@ public class ImageDttParameters {
for (int i = 0; i < 4; i++) for (int j=0; j < 2; j++) { for (int i = 0; i < 4; i++) for (int j=0; j < 2; j++) {
this.lma_dbg_offset[i][j]= gd.getNextNumber(); this.lma_dbg_offset[i][j]= gd.getNextNumber();
} }
return;
} }
......
...@@ -181,8 +181,8 @@ public class IntersceneMatchParameters { ...@@ -181,8 +181,8 @@ public class IntersceneMatchParameters {
public double pd_weight = 0.5; // correlations (post) accumulated in PD public double pd_weight = 0.5; // correlations (post) accumulated in PD
public boolean td_nopd_only = true; // only use TD accumulated data if no safe PD is available for the tile. public boolean td_nopd_only = true; // only use TD accumulated data if no safe PD is available for the tile.
public double min_str = 0.25; // minimal correlation strength for all but TD-accumulated layer public double min_str = 0.2; // 0.25; // minimal correlation strength for all but TD-accumulated layer
public double min_str_sum = 0.8; // minimal correlation strength for TD-accumulated layer public double min_str_sum = 0.7; // 0.8; // minimal correlation strength for TD-accumulated layer
public int min_neibs = 2; // minimal number of strong neighbors (> min_str) public int min_neibs = 2; // minimal number of strong neighbors (> min_str)
public double weight_zero_neibs = 0.2; // Reduce weight for no-neib (1.0 for all 8) public double weight_zero_neibs = 0.2; // Reduce weight for no-neib (1.0 for all 8)
public double half_disparity = 5.0; // Reduce weight twice for this disparity public double half_disparity = 5.0; // Reduce weight twice for this disparity
......
...@@ -4632,7 +4632,11 @@ public class OpticalFlow { ...@@ -4632,7 +4632,11 @@ public class OpticalFlow {
String scenes_suffix = quadCLTs[quadCLTs.length-1].getImageName()+ String scenes_suffix = quadCLTs[quadCLTs.length-1].getImageName()+
"-SEQ-" + IntersceneMatchParameters.MODES3D[mode3d+1] + "-"+(toRGB?"COLOR":"MONO"); "-SEQ-" + IntersceneMatchParameters.MODES3D[mode3d+1] + "-"+(toRGB?"COLOR":"MONO");
if (!toRGB && um_mono) { if (!toRGB && um_mono) {
scenes_suffix+=String.format("-UM%.1f_%.2f",um_sigma,um_weight); if (mono_fixed) {
scenes_suffix+=String.format("-UM%.1f_%.2f_%.0f",um_sigma,um_weight,mono_range);
} else {
scenes_suffix+=String.format("-UM%.1f_%.2f_A",um_sigma,um_weight);
}
} }
int num_stereo = (is_stereo && (mode3d > 0))? 2:1; // only for 3D views int num_stereo = (is_stereo && (mode3d > 0))? 2:1; // only for 3D views
boolean combine_left_right = (num_stereo > 1) && (stereo_merge || (anaglyth_en && !toRGB)); boolean combine_left_right = (num_stereo > 1) && (stereo_merge || (anaglyth_en && !toRGB));
...@@ -4645,13 +4649,13 @@ public class OpticalFlow { ...@@ -4645,13 +4649,13 @@ public class OpticalFlow {
-view_back_meters}; // Z offset -view_back_meters}; // Z offset
if (num_stereo > 1) { if (num_stereo > 1) {
scenes_suffix = scenes_suffix_pair + ((nstereo > 0)?"-RIGHT":"-LEFT"); // check if opposite scenes_suffix = scenes_suffix_pair + ((nstereo > 0)?"-RIGHT":"-LEFT"); // check if opposite
scenes_suffix += "-B"+views[ibase][0]; scenes_suffix += "-B"+String.format("%.0f",views[ibase][0]);
} }
if (views[ibase][1] != 0) { if (views[ibase][1] != 0) {
scenes_suffix += "-Y"+views[ibase][1]; scenes_suffix += "-Y"+String.format("%.0f",views[ibase][1]);
} }
if (views[ibase][2] != 0) { if (views[ibase][2] != 0) {
scenes_suffix += "-Z"+views[ibase][2]; scenes_suffix += "-Z"+String.format("%.0f",views[ibase][2]);
} }
double [][] ds_vantage = new double[][] {selected_disparity,selected_strength}; double [][] ds_vantage = new double[][] {selected_disparity,selected_strength};
if ((views[ibase][0] != 0) || (views[ibase][1] != 0) || (views[ibase][2] != 0)) { if ((views[ibase][0] != 0) || (views[ibase][1] != 0) || (views[ibase][2] != 0)) {
...@@ -5039,13 +5043,16 @@ public class OpticalFlow { ...@@ -5039,13 +5043,16 @@ public class OpticalFlow {
double [] atr_offset = ZERO3; double [] atr_offset = ZERO3;
String scenes_suffix = ""; String scenes_suffix = "";
if (img_views[ibase][0] != 0) { if (img_views[ibase][0] != 0) {
scenes_suffix += "-B"+img_views[ibase][0]; scenes_suffix += "-B"+String.format("%.0f",img_views[ibase][0]);
} }
if (img_views[ibase][1] != 0) { if (img_views[ibase][1] != 0) {
scenes_suffix += "-Y"+img_views[ibase][1]; scenes_suffix += "-Y"+String.format("%.0f",img_views[ibase][1]);
} }
if (img_views[ibase][2] != 0) { if (img_views[ibase][2] != 0) {
scenes_suffix += "-Z"+img_views[ibase][2]; scenes_suffix += "-Z"+String.format("%.0f",img_views[ibase][2]);
} }
// calculate virtual view fg_ds_virt from the reference ds_fg; // calculate virtual view fg_ds_virt from the reference ds_fg;
boolean debug_ds_fg_virt = false; // false; boolean debug_ds_fg_virt = false; // false;
...@@ -11689,7 +11696,7 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad ...@@ -11689,7 +11696,7 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
if (ref_scene.getGPU() != null) { if (ref_scene.getGPU() != null) {
ref_scene.getGPU().setGpu_debug_level(debug_level - 4); // monitor GPU ops >=-1 ref_scene.getGPU().setGpu_debug_level(debug_level - 4); // monitor GPU ops >=-1
} }
final double disparity_corr = 0.0; // (z_correction == 0) ? 0.0 : geometryCorrection.getDisparityFromZ(1.0/z_correction); final double disparity_corr = 0.00; // (z_correction == 0) ? 0.0 : geometryCorrection.getDisparityFromZ(1.0/z_correction);
//ref_disparity //ref_disparity
if (ref_disparity == null) { if (ref_disparity == null) {
ref_disparity = ref_scene.getDLS()[use_lma_dsi?1:0]; ref_disparity = ref_scene.getDLS()[use_lma_dsi?1:0];
...@@ -11830,7 +11837,10 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad ...@@ -11830,7 +11837,10 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
threadsMax, // final int threadsMax, // maximal number of threads to launch threadsMax, // final int threadsMax, // maximal number of threads to launch
debug_level); debug_level);
// final int globalDebugLevel); // final int globalDebugLevel);
if (coord_motion == null) {
System.out.println("clt_process_tl_interscene() returned null");
return null;
}
if (mov_en) { if (mov_en) {
String debug_image_name = mov_debug_images ? (scene.getImageName()+"-"+ref_scene.getImageName()+"-movements"): null; String debug_image_name = mov_debug_images ? (scene.getImageName()+"-"+ref_scene.getImageName()+"-movements"): null;
boolean [] move_mask = getMovementMask( boolean [] move_mask = getMovementMask(
...@@ -12626,6 +12636,10 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad ...@@ -12626,6 +12636,10 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
sensor_mask_inter, // final int sensor_mask_inter, // The bitmask - which sensors to correlate, -1 - all. sensor_mask_inter, // final int sensor_mask_inter, // The bitmask - which sensors to correlate, -1 - all.
facc_2d_img, // final float [][][] accum_2d_corr, // if [1][][] - return accumulated 2d correlations (all pairs)final float [][][] accum_2d_corr, // if [1][][] - return accumulated 2d correlations (all pairs) facc_2d_img, // final float [][][] accum_2d_corr, // if [1][][] - return accumulated 2d correlations (all pairs)final float [][][] accum_2d_corr, // if [1][][] - return accumulated 2d correlations (all pairs)
debug_level); // 1); // -1); // int debug_level); debug_level); // 1); // -1); // int debug_level);
if (coord_motion == null) {
System.out.println("adjustPairsLMAInterscene() returned null");
return null;
}
intersceneLma.prepareLMA( intersceneLma.prepareLMA(
camera_xyz0, // final double [] scene_xyz0, // camera center in world coordinates (or null to use instance) camera_xyz0, // final double [] scene_xyz0, // camera center in world coordinates (or null to use instance)
camera_atr0, // final double [] scene_atr0, // camera orientation relative to world frame (or null to use instance) camera_atr0, // final double [] scene_atr0, // camera orientation relative to world frame (or null to use instance)
......
...@@ -11599,7 +11599,7 @@ if (debugLevel > -100) return true; // temporarily ! ...@@ -11599,7 +11599,7 @@ if (debugLevel > -100) return true; // temporarily !
} }
} }
} else { } else {
for (int i = 0; i < quadCLTs.length; i++) { for (int i = 0; i < quadCLTs.length; i++) { // requise DSI for each model
numCorrMax[i] = multisceneLY.getNumCorrMax( numCorrMax[i] = multisceneLY.getNumCorrMax(
clt_parameters, // CLTParameters clt_parameters, clt_parameters, // CLTParameters clt_parameters,
lma_only, // boolean lma_only, lma_only, // boolean lma_only,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment