@@ -2375,6 +2375,13 @@ public class ImageDtt extends ImageDttCPU {
finaldoubleeigen_min_abs,// 0.05 values below this do not count for covariance
finaldoubleeigen_min_rel,// 0.2 values less than this fraction of tile's max do not count for covariance
finaldoubleeig_sub_frac,// 1.0; // subtract fraction of threshold {eig_min_abs,eig_min_rel} after selecting by them (0 - select only, will have pedestal)
finalinteig_recenter,// 2; // Re-center window around new maximum. 0 -no refines (single-pass)
finaldoubleeig_sub_frac1,// 0.0; // subtract during refine (may be 0)
// Using eigenvectors/values to create ellipse (slightly larger) and use it for a cosine mask (as round before) to refine centers
finaldoubleeig_scale_axes,// 1.2; // scale half-axes of the ellipse: 1.0 <-> sqrt(eigenvalue)
finaldoubleeig_inc_axes,// 1.0; // add do half-axes
finalbooleaneig_fast2x2,// use fast eigenvectors for 2x2 matrices
finaldouble[][]eigen,// null or [tilesX*tilesY]{lamb0_x,lamb0_y, lamb0, lamb1} eigenvector0[x,y],lam0,lam1
finalbooleaneigen_debug,//
finalintdebug_tileX,
...
...
@@ -2468,10 +2475,11 @@ public class ImageDtt extends ImageDttCPU {
// currently execCorr2D_normalize() output has 17 slices for old variant (no neibs) and 18/2 if (use_neibs)
finalintextra_len=extra_sum?1:0;
finalintextra_len_eig=eigen_debug?4:0;// all, all_remain, weak, weak_remain
// eig_recenter
finalintextra_len_eig=eigen_debug?(4+eig_recenter):0;// all, all_remain, weak, weak_remain
// final int corrs_len = ((use_partial || use_neibs) ? used_sensors_list.length:1); // without optional extra_len but including GPU sum
finalintcorrs_len=(use_neibs||use_partial)?used_sensors_list.length:1;// without optional extra_len but including GPU sum
corrs[indx_sum_td],// double [] data, // will be modified if fpn_mask != null;
corr_size,// int data_width, // = 2 * transform_size - 1;
...
...
@@ -2629,10 +2637,15 @@ public class ImageDtt extends ImageDttCPU {
eigen_min_rel,// double rel_min,
eig_str_sum,// double min_peak,
eig_sub_frac,// double eig_sub_frac, // subtract fraction of threshold {eig_min_abs,eig_min_rel} after selecting by them (0 - select only, will have pedestal)
eig_recenter,// int refine, // re-center window around new maximum. 0 -no refines (single-pass)
eig_sub_frac1,// double eig_sub_frac1,// subtract during refine (may be 0)
eig_scale_axes,// double scale_axes, // 1.2 scale half-axes of the ellipse: 1.0 <-> sqrt(eigenvalue)
eig_inc_axes,// double inc_axes, // 1.0 add do half-axes
fpn_mask,// boolean [] fpn_mask,
false,// boolean ignore_border, // only if fpn_mask != null - ignore tile if maximum touches fpn_mask
debug_data,// double [][] debug_data, // null or double [1]
false);// boolean debug)
eig_fast2x2,// boolean eig_fast2x2, // use fast eigenvectors for 2x2 matrices
debugTile0);// boolean debug)
used_td[nTile]=stats_mv!=null;
if(stats_mv!=null){
stats_mv[2]-=eig_str_sum*scale_neibs_td;
...
...
@@ -2650,10 +2663,15 @@ public class ImageDtt extends ImageDttCPU {
eigen_min_rel,// double rel_min,
eig_str_neib,// double min_peak,
eig_sub_frac,// double eig_sub_frac, // subtract fraction of threshold {eig_min_abs,eig_min_rel} after selecting by them (0 - select only, will have pedestal)
eig_recenter,// int refine, // re-center window around new maximum. 0 -no refines (single-pass)
eig_sub_frac1,// double eig_sub_frac1,// subtract during refine (may be 0)
eig_scale_axes,// double scale_axes, // 1.2 scale half-axes of the ellipse: 1.0 <-> sqrt(eigenvalue)
eig_inc_axes,// double inc_axes, // 1.0 add do half-axes
fpn_mask,// boolean [] fpn_mask,
false,// boolean ignore_border, // only if fpn_mask != null - ignore tile if maximum touches fpn_mask
debug_data,// double [][] debug_data, // null or double [1]
false);// boolean debug)
eig_fast2x2,// boolean eig_fast2x2, // use fast eigenvectors for 2x2 matrices
debugTile0);// boolean debug)
weak_tile[nTile]=stats_mv!=null;
if(stats_mv!=null){
stats_mv[2]-=eig_str_neib*scale_neibs_td;
...
...
@@ -2671,7 +2689,12 @@ public class ImageDtt extends ImageDttCPU {
doubleeigen_min_abs=clt_parameters.imp.eig_min_abs;//eigen_min_abs = 0.05; // 0.05 values below this do not count for covariance
doubleeigen_min_rel=clt_parameters.imp.eig_min_rel;//0.2; // 0.2 values less than this fraction of tile's max do not count for covariance
coord_motion=image_dtt.clt_process_tl_interscene(// convert to pixel domain and process correlations already prepared in fcorr_td and/or fcorr_combo_td
clt_parameters.img_dtt,// final ImageDttParameters imgdtt_params, // Now just extra correlation parameters, later will include, most others
// only used here to keep extra array element for disparity difference
...
...
@@ -4345,9 +4344,15 @@ public class Interscene {
scale_neibs_pd,// final double scale_neibs_pd, // scale threshold for the pixel-domain average maximums
scale_neibs_td,// final double scale_neibs_td, // scale threshold for the transform-domain average maximums
scale_avg_weight,// final double scale_avg_weight, // reduce influence of the averaged correlations compared to the single-tile ones
eigen_min_abs,// final double eigen_min_abs, // 0.05 values below this do not count for covariance
eigen_min_rel,// final double eigen_min_rel, // 0.2 values less than this fraction of tile's max do not count for covariance
clt_parameters.imp.eig_sub_frac,//final double eig_sub_frac, // 1.0; // subtract fraction of threshold {eig_min_abs,eig_min_rel} after selecting by them (0 - select only, will have pedestal)
clt_parameters.imp.eig_min_abs,// final double eigen_min_abs, // 0.05 values below this do not count for covariance
clt_parameters.imp.eig_min_rel,// final double eigen_min_rel, // 0.2 values less than this fraction of tile's max do not count for covariance
clt_parameters.imp.eig_sub_frac,// final double eig_sub_frac, // 1.0; // subtract fraction of threshold {eig_min_abs,eig_min_rel} after selecting by them (0 - select only, will have pedestal)
clt_parameters.imp.eig_recenter,// final int eig_recenter, // 2; // Re-center window around new maximum. 0 -no refines (single-pass)
clt_parameters.imp.eig_sub_frac1,// final double eig_sub_frac1, // 0.0; // subtract during refine (may be 0)
// Using eigenvectors/values to create ellipse (slightly larger) and use it for a cosine mask (as round before) to refine centers
clt_parameters.imp.eig_scale_axes,// final double eig_scale_axes, // 1.2; // scale half-axes of the ellipse: 1.0 <-> sqrt(eigenvalue)
clt_parameters.imp.eig_inc_axes,// final double eig_inc_axes, // 1.0; // add do half-axes
clt_parameters.imp.eig_fast2x2,// final boolean eig_fast2x2, // use fast eigenvectots for 2x2 matrices
eigen,// null, // eigen, // final double [][] eigen, // null or [tilesX*tilesY]{lamb0_x,lamb0_y, lamb0, lamb1} eigenvector0[x,y],lam0,lam1
eigen_debug,// final double [][] eigen_debug, // null or [tilesX*tilesY][]